我已经在这里看了很多堆栈流并在互联网上... 有几个类似的帖子,但他们建议的任何补救措施都不适合我...
我的活动为A-> B-> C-> D-> E。当我进入活动E时,我有一个名为exit的按钮,在按下它时应该完全退出应用程序...或者甚至在活动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开始我的活动E
Intent myIntent = new Intent(Activity5.this, LastActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
finish();
但对我不起作用......只是活动E被杀死而D弹回...我希望应用程序完全退出屏幕和正在运行的进程。
但我希望A-> D在按下后退键时继续工作。当使用到达E时,我想退出按钮点击或返回键...
任何帮助将不胜感激。
我也试过
android:launchMode="singleTop"
活动A但无效
答案 0 :(得分:2)
我发现这样做的方法是使用BroadcastReceiver
。当我有需要用户登录的活动时,我倾向于使用它。
我在基本活动中的字段是:
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
(基本活动)方法内部执行此操作:
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerReceiver(logoutBroadcastReceiver, logoutIntentFilter);
}
当我因为退出而需要放弃所有活动时,我称之为:
this.sendBroadcast(new Intent(BaseActivity.ACTION_LOGOUT));
this.finish();
假设this
是一项活动。它将向堆栈中的所有活动发送广播并让它们优雅地完成,即我在此示例中使用了基本活动,但您可以提供自定义BroadcastReceiver,您可能希望在完成活动之前处理某些事情。 / p>
答案 1 :(得分:1)
您可以退出活动E,只需覆盖后退按钮并转到主页(如果您单击主页按钮):
onBackPressed(){
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
finish();
}
答案 2 :(得分:1)
您可以关注this link。在这里,您将获得管理活动堆栈的所有要点。