有没有办法从 Application 类本身退出 android 应用程序。这甚至在任何活动被初始化之前。
场景是用户在不受支持的设备中加载构建,当我尝试加载不适合该设备的第三方库时会导致崩溃。
第三方 SDK 的这种加载发生在应用程序类中。
在这种情况下使用 System.exit(0) 是否安全,因为我无法调用 finishAffinity()?
有没有办法从 Application 类本身退出 android 应用程序。这甚至在任何活动被初始化之前。
场景是用户在不受支持的设备中加载构建,当我尝试加载不适合该设备的第三方库时会导致崩溃。
第三方 SDK 的这种加载发生在应用程序类中。
在这种情况下使用 System.exit(0) 是否安全,因为我无法调用 finishAffinity()?
快速回答:您可以使用任何功能退出本文中提到的应用程序。您可以在onCreate()
Application 类的函数中调用退出函数。但是,所有这些都会导致不受支持的设备闪烁。这不是退出应用程序的优雅方式。
首选答案:因此,作为替代方案,显示一个解释应用程序无法继续加载的原因的活动。如果可能,请将您的库加载移动到另一个类中。使用它的返回值来确定加载是否成功。如果成功,继续加载,否则显示错误消息然后退出应用程序。
我相信这将达到您的目的。
android.os.Process.killProcess(android.os.Process.myPid());
尝试先杀死所有进程,然后关闭 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);
}