Ank*_*wal 7 service android broadcastreceiver alarmmanager android-6.0-marshmallow
我已经尝试了 StackOverflow 上提供的大部分解决方案,并在 google 上搜索AlarmManager了 Marshmallow OS。但我没有得到解决方案。
代码:
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent alarmIntent = new Intent(context, UpdateTables.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar alarmStartTime = Calendar.getInstance();
//midnight
alarmStartTime.set(Calendar.HOUR_OF_DAY, 0);
alarmStartTime.set(Calendar.MINUTE, 1);
alarmStartTime.set(Calendar.SECOND, 0);
if (Calendar.getInstance().getTimeInMillis() > alarmStartTime.getTimeInMillis()) {
Log.i("Current time ", Constants.getDate(Calendar.getInstance().getTimeInMillis(),"yyyy-MM-dd HH:mm:ss.SSS"));
alarmStartTime.add(Calendar.DATE, 1);
}
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarmStartTime.getTimeInMills(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)
广播接收器
public class UpdateTables extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
Run Code Online (Sandbox Code Playgroud)
当我关闭应用程序时,设置的闹钟将从预定闹钟列表中删除:
./adb shell dumpsys alarm
Run Code Online (Sandbox Code Playgroud)
所以我创建了从最近的应用程序中AlarmManager再次调用的服务onTaskRemoved():
public class myService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
setTheTimeToUpdateTables(getApplicationContext());
super.onTaskRemoved(rootIntent);
}
}
Run Code Online (Sandbox Code Playgroud)
尝试的解决方案:
WakefulBroadcastReceiver代替BroadCastReciever。| 归档时间: |
|
| 查看次数: |
1423 次 |
| 最近记录: |