我希望在创建新示例(同一Activity的示例)时删除旧Activity示例,但我需要在回栈中维护所有其他Activity(因此FLAG_ACTIVITY_CLEAR_TOP不够)。例如,假设我有活动A、B和C,我开始:A-〉B-〉C-〉B。在第二个B活动开始时,我需要删除现有的B活动。因此,我现在有:A-〉C-〉B在跑...任何帮助都感激不尽。
zdwk9cvp1#
您可以使用Intent标志来删除前面的任务。希望这会有所帮助。
Intent
Intent intent = new Intent(this, Activity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent);
此标志将导致在活动启动之前清除与活动关联的任何现有任务。也就是说,活动将成为其他空任务的新根,并且所有旧活动都将完成。
wkftcu5l2#
我可以通过重写onNewIntent
@Override protected void onNewIntent(Intent intent) { Bundle extras = intent.getExtras(); Intent msgIntent = new Intent(this, MyActivity.class); msgIntent.putExtras(extras); startActivity(msgIntent); finish(); return; super.onNewIntent(intent); }
使活动成为单个任务
<activity android:name=".MyActivity" android:launchMode="singleTask" > </activity>
5q4ezhmt3#
似乎删除Activity并不像我想象的那么容易,因此不是一个完整的答案,但我将使用FLAG_ACTIVITY_REORDER_TO_FRONT。这不会杀死现有的Activity,而是将其移到栈顶。
Intent intent = new Intent(ctx, Activity.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent);
这将允许上面概述的活动导航。我还是很感兴趣是否有人知道清除实际活动的方法。
wlp8pajw4#
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); finish(); startActivity(intent); }
在清单文件中
ldxq2e6h5#
这个解决了我的
5条答案
按热度按时间zdwk9cvp1#
您可以使用
Intent
标志来删除前面的任务。希望这会有所帮助。此标志将导致在活动启动之前清除与活动关联的任何现有任务。也就是说,活动将成为其他空任务的新根,并且所有旧活动都将完成。
wkftcu5l2#
我可以通过重写onNewIntent
使活动成为单个任务
5q4ezhmt3#
似乎删除Activity并不像我想象的那么容易,因此不是一个完整的答案,但我将使用FLAG_ACTIVITY_REORDER_TO_FRONT。这不会杀死现有的Activity,而是将其移到栈顶。
这将允许上面概述的活动导航。
我还是很感兴趣是否有人知道清除实际活动的方法。
wlp8pajw4#
在清单文件中
ldxq2e6h5#
这个解决了我的