【发布时间】:2019-12-02 17:53:23
【问题描述】:
我不想看到 Oreo 的 AlarmManager setExactAndAllowWhileIdle 是如何工作的,并为此编写了非常简单的服务,但它不起作用,我真的无法理解原因。到目前为止我看到的所有原因都与我的代码无关。请指导我哪里出错了。
主要活动
private void startService() {
Log.d("testt", "MainActivity - startService");
Intent intent = new Intent(this, LocationReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1,intent,PendingIntent.FLAG_UPDATE_CURRENT );
AlarmManager alarmManager =(AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, System.currentTimeMillis() + 60 * 1000, pendingIntent);
}
广播接收器
public class LocationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("testt", "LocationReceiver - onReceive");
Intent i = new Intent(context, LocationService.class);
context.startService(intent);
}
}
服务
public class LocationService extends IntentService {
public LocationService() {
super("any_name");
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
Log.d("testt", "LocationService - onHandleIntent");
}
}
终于显明
<service android:name=".LocationService" android:exported="false"/>
<receiver android:name=".LocationReceiver"/>
</application>
【问题讨论】:
标签: android broadcastreceiver alarmmanager