2011-10-31 3 views
1

ブート時に起動するアップデートサービスがあります。問題は、それが小切手を出して一定期間待ってから再開することです。サービスをアプリケーションに結びつけたときに目覚まし時計でこれを行いましたが、現在は独立しており、起動時に起動するのはブロードキャスト受信機だけです。問題は今何らかの理由で自分の目覚まし時計と一体化できないということです。 私は自分のUpdateServiceクラスと私のbroadcastreceiverクラスを持っています。これまでのところ、broadcastreceiverの私のコードはこれですが、私は30秒ごとに開始するようにサービスをスケジュールするためにここに目覚まし時計を入れたいと思っています。私は本当にこれが必要です。タイマー/アラームクロックでブート時にアップデートサービス

@Override 
public void onReceive(Context context, Intent intent) { 

    Intent startServiceIntent = new Intent(context, UpdateService.class); 
    context.startService(startServiceIntent); 
} 

どのようなご提案も歓迎します。前もって感謝します。

答えて

1

私は私の問題への答えが見つかりました:

(AlarmManager)コンテキストに変更
(AlarmManager)getSystemService(ALARM_SERVICE); 

を:

private boolean service_started=false; 
private PendingIntent mAlarmSender; 

@Override 
public void onReceive(Context context, Intent intent) { 
    if(!service_started){ 
     // Create an IntentSender that will launch our service, to be scheduled 
     // with the alarm manager.  
     mAlarmSender = PendingIntent.getService(context, 
       0, new Intent(context, UpdateService.class), 0); 

     //We want the alarm to go off 30 secs from now. 
     long firstTime = SystemClock.elapsedRealtime(); 
     // Schedule the alarm!  
     AlarmManager am = (AlarmManager)context.getSystemService(context.ALARM_SERVICE); 
     am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
       firstTime,30*1000, mAlarmSender);  

     service_started=true; 
    } 
} 

は結局、私の問題は、私は次の権利としてのコンテキストを取得していないということでした.getSystemService(context.ALARM_SERVICE);

関連する問題