-2

我有 1 个应用程序自定义类MyApplication.java和 1 个活动MainActivity.java

在我第一次启动应用程序时,MyApplication.java 类运行正确。然后我通过完成活动退出应用程序

MainActivity.this.finish();

然后我单击屏幕中的应用程序图标以重新启动它。但是这一次,MyApplication.java没有运行。这意味着我无法通过完成所有活动来退出应用程序?

我无法解释为什么。

P/s:这是我的代码

我的应用程序.java

@Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "onCreate: ");
    }

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d(TAG, "onCreate: ");
}

@Override
public void onBackPressed() {
    this.finish();
}
4

2 回答 2

0

这是因为这条线 MainActivity.this.finish();

只会关闭活动,但应用程序仍在运行,因为您无权完全关闭应用程序,并证明在您单击运行的按钮后MainActivity.this.finish(); 尝试查看设备上的后台应用程序,您将看到您的app 最后,应用程序类在应用程序启动后运行,直到应用程序从设备应用程序堆栈手动关闭。

于 2017-04-10T08:44:47.367 回答
0

在 Application 类中,onCreate()仅当您退出应用程序时进程结束时才调用该方法。通常,当系统需要内存或使用后退按钮而不是主页按钮退出应用程序时,该过程会停止。但是,您不能依赖它被终止。

如果您真的想在退出应用程序时终止您的进程,您可以System.exit(0);在用户在您的第一个活动上按下后退键时调用。

@Override
public void onBackPressed() {
    MainActivity.this.finish();          
    android.os.Process.killProcess(android.os.Process.myPid());
    System.exit(0);
    getParent().finish();
}

注意:绝对不建议这样做,因为这意味着与 Android 操作系统的工作方式作斗争,并且可能会导致问题。

于 2017-04-10T08:54:59.547 回答