Java 如何以编程方式退出Android应用程序?
我相信这个问题已经被问了很多次了,因为我读了一些。我的客户希望我在他的应用程序中添加一个按钮,用户可以点击并退出。我已经阅读并发现调用Java 如何以编程方式退出Android应用程序?,java,android,eclipse,android-activity,Java,Android,Eclipse,Android Activity,我相信这个问题已经被问了很多次了,因为我读了一些。我的客户希望我在他的应用程序中添加一个按钮,用户可以点击并退出。我已经阅读并发现调用finish()就可以了。但是,finish只是关闭当前正在运行的活动,对吗?我有很多活动,所以在这种情况下,我必须传递每个活动的实例并完成它们,或者使每个活动成为单例模式 我还了解了活动。moveTaskToBack(true)可以让您进入主屏幕。好的,这不是结束,而是将过程背景化。那么这是有效的吗 我应该使用哪种方法完全关闭应用程序?上述任何方法或上述方法的任
finish()
就可以了。但是,finish只是关闭当前正在运行的活动,对吗?我有很多活动,所以在这种情况下,我必须传递每个活动的实例并完成它们,或者使每个活动成为单例模式
我还了解了活动。moveTaskToBack(true)
可以让您进入主屏幕。好的,这不是结束,而是将过程背景化。那么这是有效的吗
我应该使用哪种方法完全关闭应用程序?上述任何方法或上述方法的任何其他方法/其他用法?在onCreate上使用singletop和finish()调用的ghost活动应该可以完成此任务您可以调用System.exit();摆脱所有的偏见
android.os.Process.killProcess(android.os.Process.myPid());
submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
});
这太容易了。使用
系统退出(0)代码>准确地说,有两种可能的情况:
您可能希望退出活动
或者您想退出应用程序
您可以使用以下代码退出活动:
var intent = new Intent(Intent.ActionMain);
intent.AddCategory(Intent.CategoryHome);
intent.SetFlags(ActivityFlags.NewTask);
startActivity(intent);
finish();
但这不会杀死同一应用程序中的底层活动。
这将使应用程序最小化
如果要退出应用程序,请使用以下代码结束其进程:
android.os.Process.killProcess(android.os.Process.myPid());
对于mono开发,只需使用
process.KillProcess(Process.MyPid());
实际上,每个人都希望通过onclick事件关闭应用程序,无论活动在哪里
将此代码添加到onclick事件:
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
把这个放到你的onClic中:
moveTaskToBack(true);
finish()
如果要退出应用程序,请在按钮按下事件中使用以下代码:
public void onBackPressed() {
moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
打电话试试这个。我有时一按按钮就用它
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
它不是关闭你的应用程序,而是打开仪表板,看起来你的应用程序已经关闭
阅读这个问题以获得更清晰的答案
只需在反压中使用代码即可
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
它只使用moveTaskToBack(true)工作
这个.finishafinity()怎么样
从文件来看
完成此活动以及当前任务中紧靠其下方具有相同关联性的所有活动。当应用程序可以启动到另一个任务(例如,从其理解的内容类型的ACTION_视图)并且用户已使用向上导航切换出当前任务并进入其自己的任务时,通常使用此选项。在这种情况下,如果用户已向下导航到第二个应用程序的任何其他活动,则所有这些活动都应作为任务切换的一部分从原始任务中删除。
请注意,此完成不允许您将结果传递到上一个活动,如果您尝试这样做,将引发异常
API 16中发布的finishAffinity方法关闭所有正在进行的活动并关闭应用程序:
this.finishAffinity();
完成此活动以及当前任务中紧靠其下方具有相同关联性的所有活动。当应用程序可以启动到另一个任务(例如,从其理解的内容类型的ACTION_视图)并且用户已使用向上导航切换出当前任务并进入其自己的任务时,通常使用此选项。在这种情况下,如果用户已向下导航到第二个应用程序的任何其他活动,则所有这些活动都应作为任务切换的一部分从原始任务中删除
请注意,此完成不允许您将结果传递到上一个活动,如果您尝试这样做,将引发异常
从API 21开始,您可以使用:
finishAndRemoveTask();
完成此任务中的所有活动,并将其从“最近的任务”列表中删除
备选方案:
getActivity().finish();
System.exit(0);
资料来源:
希望有帮助!祝你好运 如果您在应用程序中使用(或任何其他发布/订阅库)在活动之间进行通信,则可以向它们发送显式事件:
final public class KillItWithFireEvent
{
public KillItWithFireEvent() {}
public static void send()
{
EventBus.getDefault().post(new KillItWithFireEvent());
}
}
唯一的缺点是,您需要所有活动侦听此事件以调用自己的finish()
。为此,您可以通过继承轻松地创建垫片活动类,该类只侦听此事件,并让子类实现其他所有内容,然后确保您的所有活动都从这个额外的层继承。kill侦听器甚至可以通过覆盖添加一些额外的功能,例如在某些特定情况下避免死亡。这将清除任务(活动堆栈)并开始新任务
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
System.exit(1);
如果同时使用“完成”和“退出”,则应用程序将完全关闭
完成()
系统出口(0) 而不是System.exit(1)只需使用System.exit(0)当您想退出应用程序时,只需运行下面两行即可
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
使用这个。finishafinity();按那个按钮而不是按finish();
如果它不起作用,那么您也可以尝试在清单中添加android:noHistory=“true”,然后通过使用finish()完成您的活动;或有限性()
希望它能帮助……:)在Xamarin中实现。Android:
public override void OnBackPressed()
{
MoveTaskToBack(true);
Process.KillProcess(Process.MyPid());
Environment.Exit(1);
}
为我工作如果还有人想知道的话,为Xamarin.Android工作(在我的例子中,它也运行Monogame)在活动
上的FinishAndRemoveTask()
命令做得很好 在片段中
getActivity().finishAndRemoveTask()
在活动中
finishAndRemoveTask() 只需调用这两个函数即可
finish();
moveTaskToBack(true);
就叫这个:
finishAffinity();
将此方法链接到“退出/退出”按钮
public void quitGame(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
finishAndRemoveTask();
} else {
finish();
}
}
使用此代码非常有用,您可以退出所有活动。这可以工作,我也尝试过
this.finishafinity()代码>为什么不使用操作栏。单击应用程序图标导航至主屏幕。单击“后退”按钮以打开exit@Raghunandan:正如我提到的,客户端要求:(检查这是否有助于android.os.Process.killProcess(android.os.Process.myPid());可能的dupl
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
public override void OnBackPressed()
{
MoveTaskToBack(true);
Process.KillProcess(Process.MyPid());
Environment.Exit(1);
}
finish();
finishAffinity();
System.exit(0);
finish();
moveTaskToBack(true);
finishAffinity();
public void quitGame(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
finishAndRemoveTask();
} else {
finish();
}
}
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
System.exit(1);