3

我想安排一项服务每分钟运行一次,并检查我的应用程序是否仍在运行。(如果应用程序已关闭,我想重新打开它)。此外,如果我的应用程序被任务管理器强行杀死,我仍然希望此服务每分钟运行一次。谢谢!

4

2 回答 2

2

另外,如果我的应用程序被任务管理器强行杀死,我仍然希望此服务每分钟运行一次

从 Android 3.1 开始,这是不可能的。如果用户进入设置并 force=stops 您的应用程序,您的应用程序将不会再次运行,直到用户手动启动您的组件之一。

如果您的进程因其他原因终止(例如,来自 Play 商店的普通任务杀手应用程序,将您的任务从“最近的任务”列表中滑出),您安排的警报AlarmManager应该保持不变,根据 Lucifer 的建议。

我正在编写一个安装在孩子手机上的“家长控制”应用程序。

任何足够聪明地使用手机的孩子都会足够聪明地以安全模式重新启动他们的设备并摆脱您的应用程序。

于 2012-10-19T13:20:43.843 回答
1

使用AlarmManager类,即使您的设备处于睡眠模式,它也能正常工作。

private static Intent alarmIntent = null;
private static PendingIntent pendingIntent = null;
private static AlarmManager alarmManager = null;


// First Creating an Intent
alarmIntent = new Intent ( context, yourClass.class );
// Create an Pending Intent which will Broadcast the Intent
pendingIntent = PendingIntent.getBroadcast(context, 234324243, alarmIntent, 0 );
// Set the AlarmManager class
alarmManager = ( AlarmManager ) context.getSystemService( ConstantCodes.ALARM_SERVICE );
// Set Repeating time interval
alarmManager.setRepeating( AlarmManager.RTC_WAKEUP, Interval * 1000, Interval * 1000, pendingIntent );

与 TimerTask 或 Thread 相比,AlarmManager 消耗的电池电量更少。它像无痛的 AsyncTask 一样工作。

于 2012-10-19T12:54:53.410 回答