0

私のアプリケーションでは、インターネットから情報をダウンロードして通知を表示するサービスをトリガーするアラームがあります。

これが私のコードの簡略版です:

MyActivity には次のものが含まれます。

            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.SECOND, 20);
            Intent intent = new Intent(this, AlarmService.class);
            PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 20000, pendingIntent);

また、AlarmService は次のようになります。

public class AlarmService extends Service {

    @Override
    public void onCreate() {

        new myAsyncTask().execute();

    }

    private class myAsyncTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... args) {

            //Download stuff

            return null;
        }

        @Override
        protected void onPostExecute(Void arg) {
            //Show notification
        }
    }
}

いつウェイクロックを使用するのかよくわからないので、私の質問: この場合、ウェイクロックを使用する必要がありますか? 使用する場合は、どこで開始および停止する必要がありますか?

前もって感謝します

4

1 に答える 1

2

WakeLockはい、サービスが作業を完了できるようにするには、を使用する必要があります。

IntentServiceを使用することが設計要件を満たしている場合は、 WakefulIntentService を検討します。ユーザーに代わってアラームとWakeLocks を管理し、セットアップも簡単です。はWakeLockアラームが発生したときに取得され、WakefulIntentServiceライブラリはサービスが終了したときにそれを解放します。

このルートに進む場合、AsyncTask を使用したくないでしょdoWakefulWork()WakeLock。..

于 2012-10-10T16:29:27.637 に答える