我希望在给定的时间间隔内继续运行警报管理器。
我实施它但在适当的时间段内不起作用。有时候它会打两次电话,有时候不会在间隔时间打电话。
我使用 RTC 和 RTC_WAKEUP ,我也想知道这个字段的含义是什么
MainActivity.java
public class MainActivity extends AppCompatActivity {
Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = getApplicationContext();
Intent intent = new Intent(this, TestBroadCastReceiver.class);
final PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
final AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
((Button) findViewById(R.id.activity_main_start)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 2000*60, pi);
Log.d("ALARM MANAGER", "Start Alarm Manager... At " + new Date());
}
});
((Button) findViewById(R.id.activity_main_stop)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alarmManager.cancel(pi);
Log.d("ALARM MANAGER", "Stop Alarm Manager...");
}
});
}
}
AlarmBroadCastReceiver.java
public class TestBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("ALARM MANAGER", "BROADCAST RECEIVER : " + new Date());
}
}
日志
答案 0 :(得分:3)
文档https://developer.android.com/reference/android/app/AlarmManager.html有一个BroadcastReceiver示例,它侦听设备唤醒。 从该接收器开始服务并在其中安排下一个警报。 我已经使用SharedPreferences存储下一个闹钟时间并启动相同的服务来处理警报并在设备启动后通过在start Intent中传递不同的键来安排新的警报。 正如文档所说,如果RTC被阻止,RTC将不会唤醒你,但RTC_WAKEUP会。