znq*_*znq 57 android android-intent android-activity
我的活动A与android:launchMode="singleTop"在清单.
如果我去的活动B,C和D在那里我有菜单快捷方式回到我的应用程序根系活力(A).
代码如下所示:
Intent myIntent = new Intent(getBaseContext(), MainActivity.class);
startActivity(myIntent);
Run Code Online (Sandbox Code Playgroud)
但是,不是返回到A我已经存在的实例,MainActivity.class而是创建一个新实例 - >它onCreate()转而不是onNewIntent().
这不是预期的行为,对吗?
Vid*_*nes 68
这应该可以解决问题.
<activity ... android:launchMode="singleTop" />
Run Code Online (Sandbox Code Playgroud)
当您创建启动应用程序的意图时:
Intent intent= new Intent(context, YourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
Run Code Online (Sandbox Code Playgroud)
这是应该需要的.
znq*_*znq 29
最终对我有用的是:
Intent myIntent = new Intent(getBaseContext(), MainActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
Run Code Online (Sandbox Code Playgroud)
Mar*_*k B 14
从文档中引用:
"standard"和"singleTop"模式仅在一个方面彼此不同:每次出现"标准"活动的新意图时,都会创建一个新的类实例来响应该意图.每个实例处理一个intent.类似地,也可以创建"singleTop"活动的新实例来处理新意图.但是,如果目标任务已经在其堆栈顶部具有活动的现有实例,则该实例将接收新意图(在onNewIntent()调用中); 未创建新实例.
我不是100%确定"已经有一个现有的活动实例位于其堆栈顶部"意味着,但也许你的活动不符合这个条件.
会singleTask或singleInstance为你工作?或者也许您可以尝试设置FLAG_ACTIVITY_SINGLE_TOP您正在创建的意图,看看是否会产生影响,尽管我认为不会.
| 归档时间: |
|
| 查看次数: |
117342 次 |
| 最近记录: |