android:launchMode="singleTask" 和 onNewIntent(Intent intent)两个特性,现总结一下经验:
android:launchMode="singleTask" 配置在 Mainifest 中,它保证了栈中此Activity总是只有一个,无论你启动它多少次;
onNewIntent(Intent intent) 是Override Activity的父类方法,只有仅在点Home键退出Activity而再次启动新的Intent进来才被调用到;
它们两结合使用,可以做到监听home键(仅当发起新的Intent)。
代码如下:
Manifest.xml
view plaincopy to clipboardprint?
<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 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 中
view plaincopy to clipboardprint?
@Override
protected void onNewIntent(Intent intent) {
if(DEBUG) Log.i(TAG, "onNewIntent ~~~~~~~ intent = "+intent);
super.onNewIntent(intent);
}
@Override
protected void onNewIntent(Intent intent) {
if(DEBUG) Log.i(TAG, "onNewIntent ~~~~~~~ intent = "+intent);
super.onNewIntent(intent);
}
注意: 当按Home键退出,再长按Home键进入,此时onNewIntent不被访问,因为再次进入的时候没有被发起Intent 。
补充说明:
在研发的项目中由于使用到 播放器为单例 singleInstance,再次调用,需要使用onNewIntent
分享到:
相关推荐
android:launchMode="singleTask" android:screenOrientation="portrait" android:theme="@style/horizontal_slide" android:windowSoftInputMode="adjustResize"> <!-- 添加好友 --> android:name=...
来自我的文章http://www.jianshu.com/p/71d99b8bfd5d 中的apk,关于singleTask在Nubia手机无效的问题
android:launchMode="singleTask" android:theme="@style/AyoTransparentTheme" /> android:name="org.ayo.app.base.TmplActivitySingleTop" android:configChanges="orientation|screenSize|...
2 设置入口activity的启动模式android:launchMode="singleTask",重写onNewIntent方法, 在退出activity时,设置intent.setAction("exit_app");然后跳转到栈底activity, 这样就可以清除栈底之外的所有activity,...
前言 本文主要介绍了关于Android Theme及解决启动黑屏的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 ... android:launchMode=singleTask> <!-- iPod主界面 --> <activity
Android微信6.6.7版...<activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:label="@string/btr" android:launchMode="singleTop" android:name=...
Android中AsyncTak的使用与源码分析 Android AsyncTask 完全解析,带你从源码的角度彻底理解 Android 异步消息处理机制完全解析,带你从源码角度彻底理解 Android 异步消息处理机制 让你深入理解 Looper、...
本文实例为大家分享了Android音乐播放器锁屏页的具体代码,供大家参考,具体内容如下 首页我们先看一下效果图 下边来说一下实现逻辑,其主要思路就是新建一个activity使其覆盖在... android:launchMode=singleInstance
Activity 四种启动模式详细介绍 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动...activity android:name=.MainActivity android:launchMode
在用安卓设备时,经常会应用到弹出推送消息。下面在此把我之前写的推送代码分享给大家,供大家参考,有不同见解的朋友欢迎提出,共同学习进步! 最近搜索看这个的朋友比较多。...android:launchMode=si
<activity android:name=".MainActivity"android:launchMode="standard" /> Activity的四种启动模式: 1.standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2.singleTop 如果在...
Android的KioskMode 用于在Android应用程序中处理信息亭模式的库。 它将设备限制为仅使用一项活动,而无法切换到其他应用。 特征: 在信息亭模式下运行您选择的活动 ... android:launchMode="singleTask" an
Activity是Android最常用的组件之一,也是最直观的组件,Activity启动时有四种模式,分别是: “standard” "singleTop" "singleTask" "singleInstance" 其中"standard"是默认模式。
Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=””设置。 一、启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的...
1、设计界面,包括四个按钮,两个文本框。单击对应按钮可以启动对应activity。假定Activity A为启动...2、修改 Activity 的启动模式 LaunchMode,并通过 Log 信息来体会不同启动模式所对应的Activity 和 task 的关系
本文实例讲述了Android编程中Activity的四种启动模式。...设置Activity的启动模式,只需要在AndroidManifest.xml里对应的标签设置android:launchMode属性,例如: <activity android:name=.A1 android:launch
使用方法:集成在host中集成Droid Plugin项目非常简单:我们只是需要将Droid Plugin当作一个lib工程应用到主项目中,然后:在AndroidManifest.xml中使用插件的com.morgoo.droidplugin.PluginApplication:...
布局文件 <TextView android:layout_width=wrap_content android:layout_height=wrap_content android:text=登录成功 android:textSize=25sp ... android:launchMode=singleTask android:noHist
一、Android EditText默认不弹出输入法的办法: 1. 在AndroidManifest.xml中将需要默认隐藏键盘的Activity中添加属性即可(常用此方法) android:windowSoftInputMode=...android:launchMode=singleTask android:wi
经常看到有App提供多个入口,就是桌面上显示有多种图标,点不同图标进入不同的功能页。 基本实现很简单,以下是步骤。 ... 在 <application> 里添加 <activity-alias ... android:launchMode=singleTask