2012-03-22 5 views
0

サービスInfoReceiverがあります。このサービスは、アプリケーションの起動時に起動され、アプリケーションが終了すると実行されます。また、起動完了時に起動するアプリケーションを追加しました。サービスは82ミリ秒(24時間)ごとに必要なコードを呼び出します。私は、電話がシャットダウンしている間スレッドをスリープ状態にする方法を知らない。また、私は120時間後にサービスを完了して破壊したい。 ここは自分のコードですシャットダウン後にアンドロイドサービスが続行します

ありがとうございます!

InfoReceiver.java

public class InfoReceiver extends Service { 

     @Override 
     public void onCreate() 
     { 
      super.onCreate(); 



        //do something code 


       } 

          } 

MyBroadcastreceiver.java

public class MyBroadcastReceiver extends BroadcastReceiver { 
private Context mContext; 
@Override 
public void onReceive(Context context, Intent intent) { 
    mContext = context; 
    Calendar cal = Calendar.getInstance(); 
    // add 5 minutes to the calendar object 
    cal.add(Calendar.SECOND, 84000); 
    Intent startServiceIntent = new Intent(context, InfoReceiver.class); 
    PendingIntent startPIntent = PendingIntent.getBroadcast(context, 0, startServiceIntent, 0); 
    AlarmManager am = (AlarmManager) mContext.getSystemService(mContext.ALARM_SERVICE); 
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), startPIntent); 


} 



} 

マニフェストファイル

<service android:name=".InfoReceiver" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name=".InfoReceiver"/> 

     </intent-filter> 
</service> 
<receiver android:process=":remote" android:name=".MyBroadcastReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

答えて

2

あなたは、このためにスレッドスリープを使用するべきではありません。システムはすぐにあなたのサービスを殺します(物事の相対的な意味では、24時間は同じアプリをメモリに入れておくのに長い時間です)。代わりに、AlarmManagerを使用して、あなたのアプリが毎日仕事をすることができるように、あなたのアプリが意図的に解雇されるように要求する必要があります。起動時には、AlarmManagerを登録して数日おきに作業してください。また、少しでも作業をするたびに、(おそらくSharedPreferencesで)どれくらいの時間を保存するかによって、あまり時間がたってからAlarmManagerからの更新要求を停止することができます。これにより、あなたのアプリがメモリを使い切って死に至ることができるようなデザインが得られます。メモリを犠牲にしても苦情を免れることはできません。

+0

私はサンプルコードを教えていただけますか? – rami78

+0

あなたは「alarmmanager example?」をグーグルで試しましたか? http://justcallmebrian.com/?p=129 –

+0

ありがとうございました...後で返信します – rami78

関連する問題