`
quanminchaoren
  • 浏览: 927192 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android 监听home键(android:launchMode="singleTask" 与 onNewIntent(Intent intent) 的用法

阅读更多

android:launchMode="singleTask" 和 onNewIntent(Intent intent)两个特性,现总结一下经验:

android:launchMode="singleTask" 配置在 Mainifest 中,它保证了栈中此Activity总是只有一个,无论你启动它多少次;

onNewIntent(Intent intent) 是Override Activity的父类方法,只有仅在点Home键退出Activity而再次启动新的Intent进来才被调用到;

它们两结合使用,可以做到监听home键(仅当发起新的Intent)。

代码如下:

Manifest.xml

  1. < activity   android:name = ".OnNewIntentDemo"   
  2.             android:launchMode = "singleTask"   
  3.                   android:label = "@string/app_name" >   
  4.             < intent-filter >   
  5.                 < action   android:name = "android.intent.action.MAIN"   />   
  6.                 < category   android:name = "android.intent.category.LAUNCHER"   />   
  7.             </ intent-filter >   
  8.             < intent-filter >   
  9.                 < action   android:name = "android.intent.action.VIEW"   />   
  10.                 < category   android:name = "android.intent.category.DEFAULT"   />   
  11.                 < data   android:mimeType = "video/*"   />   
  12.             </ intent-filter >   
  13. </ activity >   

Activity 中

  1. @Override   
  2.     protected   void  onNewIntent(Intent intent) {  
  3.      if (DEBUG) Log.i(TAG,  "onNewIntent ~~~~~~~ intent = " +intent);  
  4.      super .onNewIntent(intent);  
  5.     }  

注意: 当按Home键退出,再长按Home键进入,此时onNewIntent不被访问,因为再次进入的时候没有被发起Intent 。

分享到:
评论

相关推荐

    activity的四种启动模式和onNewIntent的关系

    需要注意的是,当Activity接收到新的Intent时,应当使用`setIntent(intent)`方法更新当前Activity的Intent对象,以便于后续可以通过`getIntent()`方法获取到最新的Intent数据。 **示例代码**: ```java @Override ...

    onNewIntent方法的使用

    在Android应用开发中,`onNewIntent()`方法是Activity生命周期中的一个重要组成部分,它与Intent对象紧密相关。Intent在Android系统中扮演着消息传递的角色,用于启动或传递数据给不同的组件,如Activity、Service等...

    android 退出app 退出应用程序

    2 设置入口activity的启动模式android:launchMode="singleTask",重写onNewIntent方法, 在退出activity时,设置intent.setAction("exit_app");然后跳转到栈底activity, 这样就可以清除栈底之外的所有activity,...

    Activity启动模式

    如果Activity已经存在,那么系统会将其任务栈中的其他Activity移除,然后将Intent传递给Activity的onNewIntent()方法。此模式常用于主界面或者设置页面,确保用户始终回到Activity的初始状态。 4. **单栈顶模式...

    Android的Activity的Launch模式之SingleTop案例

    在Android应用开发中,Activity是用户界面的基本组件,它负责与用户进行交互。理解Activity的启动模式至关重要,因为它直接影响到应用程序的行为和流程控制。本文将深入探讨`SingleTop`启动模式,并通过一个实际的...

    同一个APK多个icon进入同一个Activity的不同tab页

    在PeopleActivity的onNewIntent(Intent intent)方法中,我们可以这样处理: ```java @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); String className = intent....

    Android Activity LaunchMode 验证

    在Android应用开发中,Activity是用户界面的基本单元,而LaunchMode是控制Activity启动行为的关键配置。本主题将深入探讨Android Activity的LaunchMode,以及如何通过分析AndroidManifest.xml和实际编码来验证其工作...

    android onnewintent

    - **生命周期影响**:当使用`singleTask`或`singleInstance`启动模式时,若活动已经在任务栈中存在,则新的意图不会导致新实例的创建,而是通过调用`onNewIntent()`方法将意图数据传递给现有实例。 - **数据传递**:...

    Android 改变Activity切换方式

    总之,Android提供了多种方式来改变Activity的切换方式,包括使用Intent Flag、调整Activity的launchMode以及利用ActivityOptions实现过渡动画。开发者可以根据应用场景灵活选择,以打造独特且流畅的用户导航体验。...

    Android Activity设置相同的action进行判断源码.rar

    但开发者可以通过设置`android:launchMode`属性避免这种情况,例如使用“singleTask”或“singleTop”模式,这样只有一个Activity实例会被启动或重用。 4. **源码分析**:压缩包中的"Android Activity设置相同的...

    详解Android开发中Activity的四种launchMode

    Activity的启动模式(launchMode)是Android系统控制Activity实例创建和管理的重要机制,它决定了Intent如何启动Activity以及如何处理Activity栈(任务栈,task stack)。本文将深入探讨Android中的四种Activity启动...

    Android Activity单例.doc

    当`Activity`的启动模式为`singleTask`或`singleInstance`时,系统会调用`onNewIntent()`方法,因此你需要重写这个方法来处理新的`Intent`: ```java @Override protected void onNewIntent(Intent intent) { super...

    安卓的学习

    singleTask模式下,系统会在一个新的任务栈中启动Activity,并且如果栈中已经存在这个Activity的实例,那么它会成为这个任务栈的根Activity,同时系统会通过调用onNewIntent()方法将Intent传递给它,而不是创建新的...

    android Activity加载方式

    如果ActA的launchMode设为singleTop,当ActA已经位于栈顶且再次被启动时,系统不会创建新的ActA实例,而是调用onNewIntent()方法,传递新的Intent给现有的ActA实例。 3. **singleTask(单一任务模式)** ...

    Android onNewIntent()触发机制及注意事项

    总结,`onNewIntent()`是Android中处理新Intent的关键方法,尤其在`launchMode`为`singleTask`时。开发者需要理解其工作原理,以正确地处理数据传递和Activity生命周期。通过合理地调用`setIntent()`和处理数据的...

    Android 获取浏览器当前分享页面的截屏示例

    android:launchMode="singleTask"&gt; &lt;intent-filter&gt; &lt;action android:name="android.intent.action.SEND"/&gt; &lt;action android:name="android.intent.action.SEND_MULTIPLE"/&gt; &lt;category android:name="android....

    Android Activity启动模式之singleTop实例详解

    但需要注意的是,如果需要在启动时执行特定的初始化操作,可能需要重写`onNewIntent()`方法来处理新的Intent,而不是在`onCreate()`中,因为`onCreate()`在`singleTop`模式下可能不会被调用。此外,`singleTop`模式...

    Activity-LaunchMode

    在SingleTop模式下,如果目标Activity位于栈顶,那么系统不会创建新的实例,而是重用栈顶的实例,并调用它的onNewIntent()方法来传递新的Intent。这种方式可以避免创建不必要的Activity实例,常用于那些接收广播或...

    Android Activity LaunchMode Test

    在Android应用开发中,Activity是用户界面的基本组件,它负责与用户进行交互。LaunchMode是Android系统中Activity的一项重要属性,用于控制Activity的启动行为。理解并熟练掌握Activity的LaunchMode对于优化应用性能...

    Android 四种加载模式

    当启动一个新的Activity时,如果目标Activity已经位于任务堆栈的顶部,那么不会创建新的实例,而是将意图(Intent)传递给当前实例的`onNewIntent()`方法。这意味着,对于连续多次启动同一个Activity的操作,只要...

Global site tag (gtag.js) - Google Analytics