Android Launcher应用程序在崩溃后不会重新启动,直到用户唤醒设备



我正在开发一个应用程序,该应用程序将安装在定制的android设备中(api 28,我认为规格在这里无关紧要(

我有root权限,如果需要,我也可以编辑android操作系统。

该应用程序是一个连接到远程服务器的监督UI界面。它是主要的启动器,也是设备上唯一运行的应用程序,设备本身旨在持续运行。

我编辑了操作系统,以限制瞌睡变暗,只有在一定时间后才关闭屏幕灯,并且永远不会睡觉,这样我的应用程序就可以实时(按预期(接收和处理服务器消息

我在这里的问题是如何在没有最终用户在场的情况下处理应用程序崩溃。例如,可能会发生应用程序超过ram的数量,而android本身决定杀死我的应用程序(但可能是我没有处理的任何其他原因(。在这种情况下,我的应用程序只有在用户触摸屏幕唤醒设备后才能重新启动。

有没有一种方法可以在没有用户迭代的情况下重新启动被系统杀死的应用程序(当系统处于空闲模式时(?

我尝试了不同的方法,但都没有奏效,我想我得到的最接近的方法是:

Intent mStartActivity = new Intent(getBaseContext(), DovitActivity.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(getBaseContext(), mPendingIntentId,    mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager)getBaseContext().getSystemService(Context.ALARM_SERVICE);
mgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 100, mPendingIntent);
Runtime.getRuntime().exit(0);

理论上它应该起作用,但我的应用程序"等待";以启动,直到用户唤醒屏幕。

感谢

为您的应用程序使用android:persistent。

此标志仅适用于系统应用程序。操作系统将自动启动持久应用程序,并在应用程序崩溃后重新启动。持久应用程序将具有高优先级,并且在内存不足时不会被杀死。

你应该让你的持久应用程序稳定,避免持久应用程序崩溃,被操作系统启动,然后一次又一次地崩溃。

最新更新