我正在开发一个将安装在自定义 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);
理论上它应该可以工作,但我的应用程序仍然“等待”启动,直到用户唤醒屏幕。
谢谢