Mut*_*raj 8 android android-intent android-activity
我在任务A,B,C,D中有四项活动.
按A-> B-> C-> D顺序启动活动.
这里,
我想从D回到活动A并恢复该活动.
所以我使用了intent标志
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Run Code Online (Sandbox Code Playgroud)在stmt 1之后不再需要活动B,C,D实例.
我去标志来完成这个,
Intent.FLAG_ACTIVITY_CLEAR_TOP
Run Code Online (Sandbox Code Playgroud)在我的appp中使用上面的1和2我尝试实现像
- 返回并恢复活动A并从堆栈中删除其他活动
所以我尝试了.
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //vise versa
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,使用此引用在这里添加两个标志
(Android:setFlags和addFlags for intent之间有什么区别)
我无法完成这些任务(恢复活动A并清除其他任务).
实际的呼叫场景是
when i use the CLEAR flag the call is like D->oncreate(A) and clear BCD
when i use the REORDER flag the call is like D->onrestart(A).
Run Code Online (Sandbox Code Playgroud)
那么我如何组合这些标志以使组合动作恢复A并清除其他或有任何其他方法来执行此操作.
这是我的表现
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tpv.vptest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".NeverStopActivity"
android:label="@string/title_activity_main"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Run Code Online (Sandbox Code Playgroud)
活动1-> 2
Intent i = new Intent(getApplicationContext(), TopMenuBar.class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
活动2-> 3
Intent i = new Intent(getApplicationContext(),
Activity3.class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
和3-> 1
Intent i = new Intent(getApplicationContext(),
NeverStopActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
paw*_*eba 12
你不需要Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,Intent.FLAG_ACTIVITY_SINGLE_TOP而是使用.
所以,这将工作:
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
Run Code Online (Sandbox Code Playgroud)
要么
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
Run Code Online (Sandbox Code Playgroud)
我建议你阅读Intent.FLAG_ACTIVITY_CLEAR_TOP的文档.
编辑
它不适合你的原因是
android:launchMode="singleInstance"
Run Code Online (Sandbox Code Playgroud)
在清单中.
您的NeverStopActivity活动是在不同的任务中创建的.任务和后台堆栈中singleInstance描述了该标志的含义.
我建议你阅读整篇文章.
| 归档时间: |
|
| 查看次数: |
9638 次 |
| 最近记录: |