1
有效地跟蹤報警計數的數量
我寫了一個BroadcastReceiver如下:如何使用AlarmManager
public class myBroad extends BroadcastReceiver{
int count;
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "tgs");
wl.acquire();
try{
Bundle extras = intent.getExtras();
count=Integer.parseInt(extras.getString("status"));
}
catch(Exception e){
//nothing here
}
Toast.makeText(context, "value from onReceive:"+count, Toast.LENGTH_SHORT).show();
wl.release();
}
public void SetAlarm(Context context){
try
{
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
String count=sharedPrefs.getString("list_update_count","");
Intent in = new Intent(context, myBroad.class);
in.putExtra("status",count);
PendingIntent pintent = PendingIntent.getBroadcast(context, 0, in, 0);
AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10*1000, pintent);
}
catch(Exception e)
{
Toast.makeText(context, e+"Here", Toast.LENGTH_SHORT).show();
}
}
public void CancelAlarm(Context context)
{
Intent intent = new Intent(context, myBroad.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}
蔭傳遞計數的號碼(例如:5,這是一個報警必須觸發的次數) BroadcastReciever其工作得很好,但我不知道如何跟蹤onReceive()方法解僱次數!每次OnReceive()方法調用時,計數都是一樣的(正如我所說:它的5)。因爲所有onReceive()方法都接收到相同的值:( 請幫我跟蹤計數,所以,我可以取消報警。
這不會工作,因爲計數不會像預期的那樣減少,因爲每次th en「current_count」將被替換爲defaultCount,任何方式感謝您的想法,Iam使用SharedPref跟蹤更改... :) – Shan
我很高興這指出你在正確的方向。然而,我的解決方案**將**工作 - 請注意,我保存到'count'從共享首選項的值 - 只有當共享首選項尚未初始化,我使用'defaultCount'。 – PaF
是的。 ..它是我的錯誤。這個作品!!!!!! – Shan