2012-05-07 16 views
1

私はAlarm ManagerからServiceまでウィジェットインスタンスの更新に使用しています。これをしている間、私はいくつかの重要なスポットを欠いていると思います。Androidのアラームマネージャに関する問題

これは私がAlarm Managerを設定する方法である:

public class MyWidget extends AppWidgetProvider { 

    public void onEnabled(Context ctx) { 
     alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, MyService.class); 
     pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 

     // Repeat value depends on preferences. 
     Long repeat = Long.parseLong(prefs.getString("update_preference", "600")); 
     alarmManager.setRepeating(AlarmManager.RTC, SystemClock.elapsedRealtime(), 1000*repeat, pi); 
    } 

    @Override 
    public void onDisabled(Context context) { 
     super.onDisabled(context); 
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, MyService.class); 
     PendingIntent pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 
     alarmManager.cancel(pi); 
    } 

} 

は私がそれらを説明してみましょう:

  1. デバイスが電話を受けたか、電話をかける、エッジ/ 3Gがうまく動作しない場合。通話を処理するにはどうすればよいですか?可能であれば、コール後にアラームマネージャを再起動/トリガすることは可能ですか?または他の提案をいただければ幸いです。
  2. 場合デバイス眠っ(数分)、アンロックアラームマネージャは間隔値を超えた場合でも、すぐに動作した後。しかし、眠っている場合アラームマネージャーのロックを解除し、ウィジェットの受信機が動作していない後、長い時間がかかります。あらゆるリピートのために眠りにつく方法は何ですか?
  3. どのように制御する再起動の進行?再起動後、ウィジェットのアップデートが始まるはずです。始動の仕方がわからない。

ご意見やご提案は素晴らしいと思います。

答えて

4

私は試してみて、私の理解を最大限にお答えしますので、ご質問のいくつかは非常に明確ではありません。

  1. あなたはAlarmManager.RTC_WAKEUPを使用するようにsetRepeatingコールを変更TelephonyManager.ACTION_PHONE_STATE_CHANGED
  2. のための放送受信機を登録することができますAlarmManager.RTCの代わりに。続きを読むhere
  3. Intent.ACTION_BOOT_COMPLETEDの放送受信機を登録できます。これはアプリマニフェストの受信者として登録する必要があります。続きを読むhere
関連する問題