0

私のアプリでは、1 分ごとにアクティビティからサービスを再起動しています。ただし、アプリケーションが強制的に閉じられた場合、サービスは開始されます。その時の活動状況は。

これは私のコードです。

void toggleLogging(boolean isStart, int interval) 
{
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    PendingIntent loggerIntent = PendingIntent.getBroadcast(this, 0,new Intent(this,AlarmReceiver.class), 0);       
    long duration = interval * 60 * 1000;
    manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
    SystemClock.elapsedRealtime(), duration, loggerIntent);
    AppSettings.setServiceRunning(this, true);
}
4

1 に答える 1

0

アプリを強制終了してもアラームが登録されるので安心

あなたの要求に従って、私はコードを追加しました

public class SampleActivity extends Activity{
    public static AlarmManager mAlarmManager;
    public static PendingIntent mPintent;
    public static Intent mIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        Context context = getApplicationContext();
        SampleActivity.startAlarmManager(context);
    }

    public static void startAlarmManager(Context context){
        SampleActivity.mIntent = new Intent(context, YourService.class);
        mAlarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        mPintent = PendingIntent.getService(context, 0, SampleActivity.mIntent, 0);
        Calendar cal = Calendar.getInstance();
        mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 2000, mPintent);
    }
}

次に、起動完了時に同じアラームを開始します

public class SampleBootComplete extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent arg1) {
        SampleActivity.startAlarmManager(context);
    }

}

マニフェストファイルにブート コンプリート レシーバーを登録する

<receiver android:name="com.sample.receiver.SampleBootComplete">
           <intent-filter >
               <action android:name="android.intent.action.BOOT_COMPLETED"/>
           </intent-filter>
       </receiver>
于 2013-04-15T06:21:58.910 に答える