Rom*_*ain 12 android android-intent android-activity back-stack
我已经在SO上做了一些阅读和搜索,但找不到清除当前活动堆栈的方法.我的应用程序的上下文是由后台服务/通知启动的活动.
想象一下,我的应用程序允许您组织人员列表.几个小时前,您正在"查看"活动中查看人员X,现在这是您的堆栈顶部.在将来的某个时刻,服务会触发并为人Y弹出一个新的"通知"活动.从那里你可以编辑人Y的详细信息.
当你完成这个活动时,弹出堆栈并最终查看人X将是一个令人困惑的用户体验.理想情况下,我想回到用户正在做的任何事情(电子邮件等...),或者至少我的应用程序的主页.
我尝试启动"通知",FLAG_ACTIVTY_NEW_TASK
但似乎没有帮助:当任务完成时,它只是回到上一个任务.我想要的似乎是Android 3的新功能FLAG_ACTIVITY_CLEAR_TASK
,这在之前的SDK中并不存在.
有没有人有建议去做到这一点?
Cri*_*ian 20
只是杀死所有!
你可以通过使用BroadcastReceivers
:
BaseActivity
这样的:public class BaseActivity extends GuiceActivity {
private KillReceiver mKillReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mKillReceiver = new KillReceiver();
registerReceiver(mKillReceiver,
IntentFilter.create("kill", "spartan!!!"));
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mKillReceiver);
}
private final class KillReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
}
}
Run Code Online (Sandbox Code Playgroud)
BaseActivity
.Intent intent = new Intent("kill");
intent.setType("spartan!!!");
sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您已经在堆栈中运行了应用程序主页的实例,则当活动Y完成时,您可以使用startActivity()
该标志启动应用程序的主页(使用)FLAG_ACTIVITY_CLEAR_TOP
.因为它已经在堆栈中,而不是创建它的新实例,这将带您回到应用程序的主页并清除它上面的堆栈.
归档时间: |
|
查看次数: |
12320 次 |
最近记录: |