我正在使用Alarm Manager
通过 withService
来更新小部件实例。在这样做的时候,我想错过了一些重要的地方。
这就是我设置的方式Alarm Manager
:
public class MyWidget extends AppWidgetProvider {
public void onEnabled(Context ctx) {
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
// Repeat value depends on preferences.
Long repeat = Long.parseLong(prefs.getString("update_preference", "600"));
alarmManager.setRepeating(AlarmManager.RTC, SystemClock.elapsedRealtime(), 1000*repeat, pi);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
PendingIntent pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pi);
}
}
让我解释一下:
- 如果设备接到电话或拨打电话,Edge/3G无法正常工作。如何处理来电?如果可以,是否可以在通话后重新启动/触发警报管理器?或任何其他建议表示赞赏。
- 当设备休眠(几分钟)后,即使超过间隔值,解锁警报管理器也会立即工作。但是,如果睡眠需要很长时间,则在解锁警报管理器和小部件接收器后无法正常工作。每次重复都睡着的方法是什么。
- 如何控制重启进度?我的意思是在重新启动服务后应该启动小部件更新。不知道开始的方式。
任何帮助或建议都会很棒。