【问题标题】:MyApplication.java did not run at the second time app started?MyApplication.java 在应用程序第二次启动时没有运行?
【发布时间】:2017-04-10 08:34:39
【问题描述】:

我有 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();
}

【问题讨论】:

  • 发布您的 MainActivity 代码
  • 发布您的MyApplication.java 代码
  • @AlexTa & AMAN SINGH:我只登录他们的方法onCreate(),并没有打印日志!
  • 您在代码中的哪个位置调用 MainActivity.this.finish(); ?
  • @AlexTa:我把它放在 onBackPressed()

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


【解决方案1】:

在 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 操作系统的工作方式作斗争,并且可能会导致问题。

【讨论】:

  • 我在 MainActivity.this.finish() 之后使用了 System.exit(0),但是当我按下返回按钮时应用程序重新启动!
  • 尝试在您的第一个/主要活动的onDestroy() 方法中移动System.exit(0);
  • @Priank Patel:还是不行 :(我已经把它放在onDestroy(),但是我的应用在按下返回按钮后仍然自动启动!
  • @Priank Patel:非常感谢!问题解决
【解决方案2】:

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

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

【讨论】:

  • 如何关闭应用程序?我在 MainActivity.this.finish() 之后使用了 android.os.Process.killProcess(android.os.Process.myPid()),但是当我按下返回按钮时应用程序就会重新启动!
  • 不幸的是,根据我的搜索,这不是你可以做的事情,但如果你能确保这个应用程序只有一个进程,你的解决方案将可以工作,尽管只有一个能够将资源和进程设置为应用程序是系统本身,并从一个到另一个区分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多