不建议直接退出应用程序,因此重点是完成所有活动,以便一切都进入后台,用户返回主屏幕。我的问题是我有主要的活动,总是用标志Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP并启动另一个活动,我想放置退出按钮。为了让一切都在后台,我必须完成当前和主要活动。我虽然使用那些标志和它应该退出的额外信息启动主要活动就可以解决问题,但是带有意图的附加功能没有达到主要活动 - 它仍然获得了android用来启动应用程序的意图。 / p>
换句话说,我尝试过类似的东西:
// Exit's onClick:
Intent intent = new Intent(someContext, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("exit", true);
context.startActivity(intent);
currentActivity.finish();
// MainActivity onCreate:
Bundle extras = getIntent().getExtras();
if (extras != null)
{
// application never reach this point
boolean exit = extras.getBoolean("exit");
if (exit)
{
finish();
return;
}
}
附加内容已发送。我怎样才能让它发挥作用?
由于
答案 0 :(得分:3)
设置此2标志时,如果MainActivity仍然在堆栈中,则它不会到达onCreate()。这将调用onNewIntent()。
查看以下2个链接以获取更多信息:
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP
答案 1 :(得分:1)
System.Exit(0);
//您可以使用它来退出整个应用程序,而不仅仅是一个活动
答案 2 :(得分:0)
在MainActivity
文件中将"SingleTop"
的启动模式设置为AndroidManifest.xml
,如下所示:
android:launchMode="singleTop"
答案 3 :(得分:0)
我不知道这是否是最佳解决方案,但对我有用:
在事件监听器上:
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
答案 4 :(得分:0)
在你的活动上调用moveTaskToBack(true)
答案 5 :(得分:0)
简单,创建一个类并放置一个静态变量和函数如下:
public static boolean isExit = false;
public static boolean CheckExit() {
return isExit;
}
public static void setisExit(boolean b)
{
isExit = b;
}
在您的主要活动中,当应用程序重新启动时,YourClassName.setisExit(false);
将确保isExit
值为false。
退出:
将其放入OnClick
方法:
YourClassName.setisExit(true);
finish();
并将其放在每个活动的OnResume
方法的第一行:
if(YourClassName.CheckExit()) {
finish();
return super.onResume();
}
每次活动恢复时检查isExit
值,如果为真,则退出。
您可以在Google Play上查看我的应用E Player
。我实现了这个方法,并且工作正常