【问题标题】:Exit Android application from application class (Not activity)从应用程序类退出 Android 应用程序(非活动)
【发布时间】:2022-01-20 14:48:17
【问题描述】:

有没有办法从 Application 类本身退出 android 应用程序。 这甚至在任何活动被初始化之前。

场景是用户在不受支持的设备中加载构建,当我尝试加载不适合该设备的第三方库时会导致崩溃。

第三方 SDK 的这种加载发生在应用程序类中。

在这种情况下使用 System.exit(0) 是否安全,因为我无法调用 finishAffinity()?

【问题讨论】:

  • System.exit() 如果堆栈上有多个活动,则不会终止您的应用程序。
  • 正如我在问题中提到的,这是在创建任何活动之前在应用程序 onCreate() 中完成的
  • System.exit() 是终止 android 应用程序的坏方法,老实说我不会使用它。
  • 我推荐使用finishAndRemoveTask();而不是 System.exit()
  • 在初始化活动之前是否需要这样做?问这个是因为你可以在初始化失败的情况下立即完成活动。除非活动本身(在 onCreate 之前)需要这样做,否则只需在应用程序类上检测到它,然后在它失败时完成活动(并检查您的 onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy 循环是否有空指针.) 调用 System.exit() 或任何等效的方法将导致不可预知的行为。

标签: android system.exit


【解决方案1】:

快速回答:您可以使用任何功能退出本文中提到的应用程序。您可以在 Application 类的 onCreate() 函数中调用退出函数。但是,所有这些都会导致不受支持的设备闪烁。这不是退出应用的优雅方式。

首选答案:因此,作为替代方案,显示一个解释应用程序无法继续加载的原因的活动。如果可能,请将您的库加载移动到另一个类中。使用它的返回值来确定加载是否成功。如果成功,继续加载,否则显示错误消息然后退出应用程序。

【讨论】:

    【解决方案2】:

    我相信这会达到你的目的。

     android.os.Process.killProcess(android.os.Process.myPid());
    

    【讨论】:

      【解决方案3】:

      尝试先杀死所有进程,然后关闭java vm。

      public void killAppProcess() {
          ActivityManager mActivityManager = (ActivityManager)CurrentActivity.this.getSystemService(Context.ACTIVITY_SERVICE);
          List<ActivityManager.RunningAppProcessInfo  mList = mActivityManager.getRunningAppProcesses();
          for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : mList)
          {
              if (runningAppProcessInfo.pid != android.os.Process.myPid())
              {
                  android.os.Process.killProcess(runningAppProcessInfo.pid);
              }
          }
          android.os.Process.killProcess(android.os.Process.myPid());
          System.exit(0);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-13
        • 1970-01-01
        • 2012-06-20
        • 1970-01-01
        • 2012-06-22
        • 2015-06-08
        • 2014-01-18
        相关资源
        最近更新 更多