gpt4 book ai didi

android - Activity 堆栈问题

转载 作者:行者123 更新时间:2023-11-29 18:00:42 25 4
gpt4 key购买 nike

我在这里和互联网上浏览了很多 stackoverflow...有几个类似的帖子,但他们建议的任何补救措施都不适合我......

我的 Activity 为 A->B->C->D->E。当我进入 Activity E 时,我有一个名为退出的按钮,按下它应该完全退出应用程序......或者甚至在 Activity E 上按下后退键,它应该退出应用程序......我已经尝试过以下

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}

public void onDestroy()
{
super.onDestroy();
Toast.makeText(getApplicationContext(), "Thanks for using App.\nGood Bye", Toast.LENGTH_SHORT).show();


//this.moveTaskToBack(true);
//android.os.Process.killProcess(android.os.Process.myPid());
}

并从 D 开始我的 Activity E 为

Intent myIntent = new Intent(Activity5.this, LastActivity.class); 
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
finish();

但对我不起作用...只是 Activity E 被杀死并且 D 弹出...我希望应用程序完全从屏幕和正在运行的进程中退出。

但我希望 A->D 在按下后退键时继续工作。就在使用到 E 时,我想退出按钮单击或返回键...

我们将不胜感激。

我也试过

android:launchMode="singleTop" 

在 Activity A 上但无济于事

最佳答案

我发现一种方法是使用 BroadcastReceiver。当我有需要用户登录的 Activity 时,我倾向于使用它。

我在我的基本 Activity 中的字段是这些:

public static final String ACTION_LOGOUT = "com.app.android.ACTION_LOGUT";

private static IntentFilter logoutIntentFilter = new IntentFilter(
ACTION_LOGOUT);

private BroadcastReceiver logoutBroadcastReceiver = new BroadcastReceiver() {
@Override public void onReceive(Context context, Intent intent) {
Log.i("Closing activity due to logout: "
+ BaseLoggedActivity.this.getClass());
finish();
}
};

onCreate(基本 Activity 的)方法中,我这样做:

@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerReceiver(logoutBroadcastReceiver, logoutIntentFilter);
}

当我因为注销而需要放弃所有 Activity 时,我称之为:

    this.sendBroadcast(new Intent(BaseActivity.ACTION_LOGOUT));
this.finish();

假设 this 是一个 Activity 。它将向堆栈中的所有 Activity 发送广播并让它们优雅地完成,即我在此示例中使用了基本 Activity ,但您可以提供自定义 BroadcastReceiver,您可能希望在完成 Activity 之前处理一些事情。

关于android - Activity 堆栈问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16262540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com