Android MyApplication.java在应用程序第二次启动时未运行?

Android MyApplication.java在应用程序第二次启动时未运行?,android,activity-finish,android-application-class,Android,Activity Finish,Android Application Class,我有一个应用程序自定义类MyApplication.java和一个活动MainActivity.java 在我第一次启动应用程序时,类MyApplication.java正确运行。然后在完成活动后退出应用程序 MainActivity.this.finish(); 然后我点击屏幕上的应用图标再次启动它。但是这次,MyApplication.java不运行。这意味着我无法通过完成所有活动退出应用程序 我无法解释为什么 这是我的代码 MyApplication.java MainActivity.

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

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

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

我无法解释为什么

这是我的代码

MyApplication.java

MainActivity.java

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

将仅关闭活动,但应用程序仍在运行,因为您没有完全关闭应用程序的权限,并在单击运行
MainActivity.this.finish()的按钮后证明这一点;

尝试查看设备上的后台应用程序。应用程序启动后,应用程序类将运行,直到手动从设备应用程序堆栈关闭应用程序。

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

如果您确实想在退出应用程序时终止进程,可以调用
System.exit(0)当用户在第一个活动中按back键时

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

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

发布您的主要活动代码发布您的
MyApplication.java
code@AlexTa&AMAN SINGH:我只登录了他们的onCreate()方法,并且没有打印日志!您在代码的何处调用MainActivity.this.finish()@亚历克斯塔:我把它放在onBackPressed()中,我怎样才能关闭应用程序?我在MainActivity.this.finish()之后使用了android.os.Process.killProcess(android.os.Process.myPid()),但我一按后退按钮应用程序就会重新启动!不幸的是,根据我的搜索,这不是你可以做的事情,但如果你能确保此应用程序只有一个进程,那么你的解决方案将起作用,尽管唯一能够为应用程序设置资源和进程的是系统本身,并且能够区分我使用过的其他系统。退出(0)在MainActivity.this.finish()之后,但我一按back按钮应用程序就会重新启动!尝试移动
系统。退出(0)在你的第一个/主要活动的
ondestory()
方法中。@Priank Patel:它仍然不起作用:(我已经将它放在
ondestory()
中,但我的应用程序在按下后退按钮后仍然自动启动!@Priank Patel:非常感谢!问题已经解决
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d(TAG, "onCreate: ");
}

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