0

我正在开发一个将安装在自定义 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);

理论上它应该可以工作,但我的应用程序仍然“等待”启动,直到用户唤醒屏幕。

谢谢

4

1 回答 1

0

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

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

并且您应该使您的持久应用程序稳定,并避免持久应用程序崩溃,由操作系统启动,然后再次崩溃。

于 2022-02-28T11:36:12.640 回答