大家好,我正在尝试学习如何在Android中使用AlarmManager
和BroadcastReceiver
。 我在AlarmManager
: 有一些问题我在1分钟的距离设置了两个闹钟,但只有一个火灾,并且它迟了几分钟(我猜不可预测)。AlarmManager火迟了或根本不开火
这是我的主要活动(我通过点击一个按钮设置报警)
public class MainActivity extends AppCompatActivity {
AlarmManager alarmManager;
Intent intent;
PendingIntent pendingIntent;
AtomicInteger atomicInteger;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
intent = new Intent(Constants.EXTENDED_DATA_STATUS);
atomicInteger = new AtomicInteger();
setContentView(R.layout.activity_main);
Button startButton = (Button) findViewById(R.id.start_button);
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int id = atomicInteger.incrementAndGet();
pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),id,intent,0);
Calendar firstLullo = Calendar.getInstance();
Calendar secondLullo = Calendar.getInstance();
firstLullo.set(Calendar.HOUR_OF_DAY,10);
firstLullo.set(Calendar.MINUTE,55);
secondLullo.set(Calendar.HOUR_OF_DAY,10);
secondLullo.set(Calendar.MINUTE,56);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP,firstLullo.getTimeInMillis(),pendingIntent);
alarmManager.setExact(AlarmManager.RTC_WAKEUP,secondLullo.getTimeInMillis(),pendingIntent);
}
Log.d("ALARM","settato con id " + String.valueOf(id));
}
});
}
}
我的收款人只显示一个面包和让手机震动。 Constants.EXTENDED_DATA_STATUS
是一个Constants
类的字符串,它被添加到Android Manifest中我的Reveiver的intent-filter
。
我在想什么?我用Google搜索了很多,只发现我必须使用setExact()
,但没有运气..
在此先感谢
能否请您发表您的'的onReceive()'你报警的一部分? – Strider