W00*_*0di 7 android android-intent android-activity back-stack
我从活动A-> B-> C-> D-> E开始..当我从D-> E开始时,堆栈中应该没有活动但是,用户可以使用D中的后退按钮并转到C(没有刷新活动C,像正常的后退功能一样)
Tri*_*mon 17
您可以BroadcastReceiver在要关闭的所有活动中添加一个(A,B,C,D):
public class MyActivity extends Activity {
private FinishReceiver finishReceiver;
private static final String ACTION_FINISH =
"com.mypackage.MyActivity.ACTION_FINISH";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finishReceiver= new FinishReceiver();
registerReceiver(finishReceiver, new IntentFilter(ACTION_FINISH));
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(finishReceiver);
}
private final class FinishReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_FINISH))
finish();
}
}
}
Run Code Online (Sandbox Code Playgroud)
......并通过致电......关闭它们
sendBroadcast(new Intent(ACTION_FINISH));
Run Code Online (Sandbox Code Playgroud)
...在活动E中.也检查这个好例子.
添加标志FLAG_ACTIVITY_CLEAR_TOP,以便在启动E活动时清除其他活动表格后备堆栈:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)
然后开始你的活动:
startActivity(intent)
Run Code Online (Sandbox Code Playgroud)
有关的更多信息:任务和BackStack
| 归档时间: |
|
| 查看次数: |
7393 次 |
| 最近记录: |