2017-05-03 13 views
0

私はクラスノッダーがバックグラウンドで実行されています。 1分ごとに再起動します。 notiferのonReceiveは次のとおりです。アラームをキャンセルして新しいデータで開始できません(アラームマネージャー)

notiferデータの変更が検出されたとき、私はUIスレッドからこれを行う上で作業する必要があるデータに変更があるたび
@Override 
public void onReceive(final Context contextn, final Intent intent) 
{ 
    Log.d("Notifier","started"); 
    String id[] = intent.getStringArrayExtra("id"); 
    Log.d("notifier",String.valueOf(id.length)); 

    if (id!=null) { 
     context = contextn; 
     backgroundsync back = new backgroundsync(); 
     back.execute(id); 

     Intent callagain = new Intent(context, notifer.class); 
     callagain.putExtra("id", id); 
     PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, callagain, 0); 
     AlarmManager notifalm; 
     notifalm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     notifalm.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 60000, alarmIntent); 
    } 
} 

cancelalarm(); 
//changed data in database here 
setalarm(); 

方法の定義である:

private void setalarm() 
{ 
    Intent callagain = new Intent(this,notifer.class); 
    String ids[]=interact.checked(); 
    for (int i=0;i<ids.length;i++) 
     Log.d("Main checked new",ids[i]); 
    callagain.putExtra("id", ids); 
    alarmIntent = PendingIntent.getBroadcast(this, 0, callagain, 0); 
    AlarmManager notifalm; 
    notifalm = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 
    notifalm.setExact(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),alarmIntent); 
} 
private void cancelalarm() 
{ 
    Intent callagain = new Intent(this,notifer.class); 
    String ids[]=interact.checked(); 
    for (int i=0;i<ids.length;i++) 
     Log.d("Main checked old",ids[i]); 
    callagain.putExtra("id", ids); 
    alarmIntent = PendingIntent.getBroadcast(this, 0, callagain, 0); 
    AlarmManager notifalm; 
    notifalm = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 
    notifalm.cancel(alarmIntent); 
} 
interact.checked

()notiferに送信する必要があるデータベースからデータを返します。

データが変更されてもnotiferが古いデータを処理していても問題になります。 Pls、私はここで何時間も立ち往生しています。

他の情報が必要な場合はお知らせください。

答えて

関連する問題