大家好,我正在嘗試學習如何在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