我有两个应用的应用-B启动应用程序-A。 如果用户从在App-A应用AI通话结束内开始应用B,所以我也没问题。
如果用户去直接从应用程序抽屉中应用B或长按home键然后我实现低于该清除在应用程序A中的任务首先将所有的临时演员面前。 这所期望的影响,但只适用于API 11.在较低的API在APP-A的新任务不会改变,群众演员putExtra不会有任何效果。 任何替代FLAG_ACTIVITY_CLEAR_TASK
? 为API <= 10?
Intent i = new Intent("com.App-A");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
谢谢
贾森
新IntentCompat应该已经帮助上,但显然该标志的API忽略低于11。
要使用IntentCompat做到以下几点:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
这将正常工作
i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY |
Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
我发现这些意图标志的最好的文档是在这里: http://blog.akquinet.de/2010/04/15/android-activites-and-tasks-series-intent-flags/
我不明白你正在尝试做的,但你有没有试过FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
?
我可能是错的理解你的要求,但它是当您启动B,你想有一个会死吗?
在A,它添加到清单中的活动标签:
android:noHistory=true
这将导致从内存只要它失去焦点除去活动。
我仍然有很多无法理解的问题,而是想帮你解决这个问题。 由于评论只允许600个字符,不格式化好,我要创建一个答案,而不是,因为我敢肯定,我们一起能得到这个解决。
我希望能够重现你的问题。 要做到这一点,我创建了2个应用程序:APPA和APPB。 APPA有一个叫做单一的活动ActivityA
和APPB有一个叫做单一活动ActivityB
。 无论ActivityA
和ActivityB
使用android:launchMode="singleTask"
ActivityA
上有一个按钮,启动APPB和装饰,就像这样:
Intent intent = new Intent("de.sharpmind.example.AppB");
intent.putExtra("extra", "launched from AppA");
startActivity(intent);
finish();
ActivityB
上有一个按钮,启动APPA是这样的:
Intent intent = new Intent("de.sharpmind.example.AppA");
intent.putExtra("extra", "launched from AppB");
startActivity(intent);
这所有的作品我希望它。 APPA和APPB在不同的任务中运行。 “额外”正常出现在onCreate()
每个应用程序的方法。
所以,可以请你把你的问题告诉我。 我怎样才能准确地再现您的问题? 你写了:
较低的API在APP-A的新任务不会改变,演员putExtra不会有任何效果。
你是什么意思? 你在哪里把演员和你在哪里得到他们,你能指望什么发生?
此外,什么是launchMode
你的AppB
?
此外,当你有这样的问题,都在为APPA任务堆栈还有其他的活动?
请提供更多的信息,无论是在你原来的问题还是这里的意见。
使用FLAG_ACTIVITY_CLEAR_TASK
清除后退堆栈。 如果我理解正确的话,这是你想要的行为。
使用singleInstance
而不是singleTask
在你的清单将做到这一点。
在评论你说的,它必须是singleTask
。 我假设这是因为你需要在某些情况下返回堆叠。
由于launchMode
不能programaticaly改变和FLAG_ACTIVITY_CLEAR_TASK
不availble的用于API <= 10,则可能必须创建两个相同的活动。
一个与launchMode=singleTask
和一个与launchMode=singleInstance
。
这种添加使用一个singleInstance
从应用程序的抽屉启动时能获得清晰的堆栈:
<category android:name="android.intent.category.LAUNCHER" />