MyApplication.java在第二次启动应用时没有运行?

时间:2017-04-10 08:34:40

标签: android activity-finish android-application-class

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

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

退出应用程序
MainActivity.this.finish();

然后我点击屏幕上的应用图标再次启动它。但这一次, MyApplication.java 不会运行。这意味着我无法通过完成所有活动退出应用程序?

我无法解释原因。

P / s:这是我的代码

  

MyApplication.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();
}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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操作系统的工作方式作斗争并可能导致问题。