最近项目开发中用到了android:launchMode="singleTask"和 onNewIntent(Intent intent)两个特性,现总结一下经验:

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

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

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

代码如下:

Manifest.xml

<activity android:name=".OnNewIntentDemo"
android:launchMode="singleTask"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="video/*" />
</intent-filter>
</activity>

Activity 中

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

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

更多相关文章

  1. Activity中的四种启动模式
  2. Android开机log分析
  3. Android(安卓)back键ANR,与onPause,onDestory “延迟执行”的问题
  4. android 测试简介
  5. Android中关于startActivityForResult()在activity不同启动模式
  6. android启动过程
  7. android adb启动失败问题 adb server is out of date. killing..
  8. Android源码--开机启动流程学习
  9. WiFi流程

随机推荐

  1. 【UI交互效果】android UI效果一: coverF
  2. Android数据篇(二)
  3. 初探Android平台上的定位服务(GPS)
  4. Android开发:TabActivity中onKeyDown无法
  5. Android程序框架
  6. android 监听网络状态
  7. Eclipse使用Butterknife的相关配置
  8. adw-launcher-android----流行的桌面
  9. android 开机动画的制作
  10. Android(安卓)Weekly Notes Issue #239