android 在主活动中清除一次活动历史堆栈

e4eetjau  于 2021-06-14  发布在  Android
关注(0)|答案(2)|浏览(164)

我想在启动位于Mainoncreate()方法内部的MainActivity后清除HistoryStack。
由于一些问题,我不能使用android:noHistory="true",因为它给我的gPlus登录带来了问题,也不能使用finish()FLAG_ACTIVITY_NO_HISTORY,原因类似。
我只想在特定情况下删除它,即在Main内部时,否则它应该在历史堆栈上。
一旦进入主界面,所有历史堆栈应被清除,并且过度按回应用程序应退出。是否可能?

wd2eg0qa

wd2eg0qa1#

对于没有最近的活动,请在期望的活动中使用android:excludeFromRecents="true"

rkkpypqq

rkkpypqq2#

您可以在要完成的所有活动中添加BroadcastReceiver。

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();
    }
}
}

要关闭这些活动,请调用

sendBroadcast(new Intent(ACTION_FINISH));

有关详细信息,请查看此示例:
http://www.hrupin.com/2011/10/how-to-finish-all-activities-in-your-android-application-through-simple-call

相关问题