android:launchMode="singleTop"

Android: new Intent() starts new instance with android:launchMode="singleTop"

I have Activity A with android:launchMode="singleTop" in the manifest.

If I go to Activity B , C and D there I have menu shortcuts to return to my applications root activity (A ).

The code looks like this:

Intent
 myIntent 
=
 
new
 
Intent
(
getBaseContext
(),
 
MainActivity
.
class
);

startActivity
( myIntent );

However, instead of returning to the already existing instance A of my MainActivity.class it creates a new instance -> it goes to onCreate() instead of onNewIntent() .

This is not the expected behavior, right?

 

This question and answers originated from stackoverflow.com
Question by Stefan Klumpp

Answer3:

This should do the trick.
<activity
 ... 
android:launchMode
=
"singleTop"
 
/>

When you create an intent to start the app use:

Intent
 intent
=
 
new
 
Intent
(
context
,
 
YourActivity
.
class
);

intent
. setFlags ( Intent . FLAG_ACTIVITY_NEW_TASK | Intent . FLAG_ACTIVITY_SINGLE_TOP );

This is that should be needed.

 

Answer by PHP_Jedi

Answer2:

The "standard" and "singleTop" modes differ from each other in just one respect: Every time there's new intent for a "standard" activity, a new instance of the class is created to respond to that intent. Each instance handles a single intent. Similarly, a new instance of a "singleTop" activity may also be created to handle a new intent. However, if the target task already has an existing instance of the activity at the top of its stack , that instance will receive the new intent (in an onNewIntent() call); a new instance is not created.

I'm not 100% sure what "already has an existing instance of the activity at the top of its stack" means, but perhaps your activity isn't meeting this condition.

Would singleTask or singleInstance work for you? Or perhaps you could try setting FLAG_ACTIVITY_SINGLE_TOP on the intent you are creating to see if that makes a difference, although I don't think it will.

Answer by mbaird


It means that the task stack (application stack) that is currently active has an instance of that activity on top (e.g. an activity is starting another copy of the same activity when it has focus). Other instances of the same activity may exist on other tasks (applications). – Seth Illgard May 4 at 21:39

So if my will is to launch a new instance of activity in the same proccess, but i already FOCUSED on a previouse instance of that activity, how would i do that? – rayman Jul 14 at 7:31

Answer1:

What actually worked for me in the end was this:
Intent
 myIntent 
=
 
new
 
Intent
(
getBaseContext
(),
 
MainActivity
.
class
);

myIntent
. setFlags ( Intent . FLAG_ACTIVITY_CLEAR_TOP );
startActivity
( myIntent );

Answer by znq

original from:
http://stackoverflow.com/questions/2424488/android-new-intent-starts-new-instance-with-androidlaunchmodesingletop
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值