代码先锋网 代码片段及技术文章聚合

(原创)Activity启动模式之singleTask

android中activity有四种启动模式

standard(默认):在同一个任务栈中可以有重复的activity,基本没什么限制

singleTop:只有当此activity在栈顶时,去创建它,不会有新的activity生成,而是调用onNewInstance()方法

singleTask:在栈中只有一个activity实例,回调onNewInstance(),会把它之上的activity都finish()掉

singleInstance:会在新的任务栈中创建

设置启动模式在AndroidManifest.xml中

<activity
            android:name=".MainActivity"
            android:launchMode="singleTask"
            android:label="@string/app_name" >

onNewIntent()方法

/**
	 * 只有在新的intent时候才会调用此方法,Home键退出之后再进来,或者本例中跳转过来
	 */
	@Override
	protected void onNewIntent(Intent intent) {
		Toast.makeText(MainActivity.this, "onNewIntent调用了", 0).show();
		super.onNewIntent(intent);
	}

  配合singleTask和onNewIntent()可以做到Home键再点击图标进来后调用此方法.

但是设置MainActivity为singleTask之后,Home键后再点击图标总会打开MainActivity,无论home时在哪个activity.

默认的启动模式并不会这样,这里是要注意的地方.

版权声明:本文为weixin_33728708原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33728708/article/details/93241543

智能推荐

(转)Activity以singleTask模式启动,intent传值的解决办法

在默认情况下,当通过Intent启动一个activity的时候,就算已经存在一个相同的正在运行的activity,系统都会创建一个新的activity实例并显示出来,新的activity会正常的执行 onCreate( )->onStart( )->onResume( )。 为了不让activity实例化多次,我们一般都会使用单例模式(singleTask),即:在AndroidMan...

Activity启动模式SingleTask与android.intent.action.MAIN的坑

在对外提供广告SDK时(主要为游戏App提供广告SDK),其中游戏Activity通常都会被设置为SingleTask。而广告SDK中视频广告,通常也会在一个新的Activity中进行播放。 一个正常游戏App的Activity如下: Application - SplashActivity  -  GameActivity ,其中SplashActivity为Main、Lau...

Activity在SingleTask启动模式下的数据传递问题

    Activity在使用SingleTask启动模式时 , 第一次启动会调用onCreate方法.     但当第二次以及之后再次启动这个Activity的时候,如果Activity已经被系统杀死,则依然调用onCreate,而若Activity没有被系统杀死,则会调用onNewIntent方法来启动.     ...

android当activity启动模式设置成singleTask如何获取intent

当A  activity启动模式设置成SingleTask时再从别的页面跳转到该A  activity则生命周期为 onNewIntent onRestart onStart onResume 此时如果在A  activity中获取intent则获取不到,如果要每次获取intent传来的新数据就需要在onNewIntent(Intent intent)方法里调用set...

Activity以singleTask模式启动,intent传值的解决办法

转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/46557827 因为项目中,有一个消息推送的功能,每次推送一个消息,就会开启FunctionActivity,那么为了避免重复开启它,在退后的时候,多次出现该Activity,就将该Activity的启动模式变为singleTask。 这样在之后的多次启动该Activity,便...

猜你喜欢

singleTask模式的Activity接收Bundle问题

 项目里使用了第三方的SDK BuzzBox来实现Notification的消息推送功能。消息推送后,点击打开应用跳转到MainActivity,并根据点击对应NotificationMessage,在主界面显示相关的Fragment。因此点击消息时需要设置跳转的Activity并附带参数。 消息推送实例中设置消息推送方法: 而我一开始在MainActivity里直接这么接收B...

Activity启动模式之SingleInstance

启动模式系列之:Activity启动模式(Standrd和SingleTop) 启动模式系列之:Activity启动模式(SingleTask) 启动模式系列之:Activity启动模式(SingleInstance) 一,SingleInstance模式(单实例模式) 解释:在启动单实例模式的Activity时,系统为其创建一个耽误的任务栈,以后每次都会使用这个单例,直到这个单例被摧毁。 与栈内...

Android 启动模式之三 singleTask

之所以单独写是因为这个问题没有找到依据; 问题描述: 1、当把首页1设置为该模式时,点击launch中图标,启动应用; 2、进入首页A后再进入另外一个界面B; 3、此时点击Home键; 4、再次点击图标,进入应用,此时显示的页面是A而不是B? 根据搜索结果,目前得到的答案为: 当设置为“singleTask”时启动项只有一个就是首页,当执行第4步时,不管你在第2步时是否把首...

Android Intent传递数据使用getIntent()接收不到,Intent传递数据与Activity启动模式singleTask的关系

文章目录 1、常规Intent传递数据 2、Activity启动模式为singleTask时,Intent传递数据 1、常规Intent传递数据 2、Activity启动模式为singleTask时,Intent传递数据 2.1、首先需要在 onNewIntent(Intent intent) 方法中,使用 setIntent(intent) 方法,把最新的intent数据导入; 2.2、再使用 ...