サービスを呼び出すAlarmManagerを実装しました。問題はAsyncTaskで起動しても、メインスレッドをブロックしていることです。AlarmManagerがメインスレッドをブロックしています
private class NotificationsServiceTask extends AsyncTask<Void, Void, Void> {
private AlarmManager alarmMgr;
private PendingIntent pi;
@Override
protected Void doInBackground(Void... params) {
alarmMgr = (AlarmManager) LoginActivity.this.getSystemService(Context.ALARM_SERVICE);
Intent serviceIntent = new Intent(LoginActivity.this, Service.class);
pi = PendingIntent.getService(LoginActivity.this, 0, serviceIntent, 0);
alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 120000, pi);
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
}
}
私はそれが私のメインスレッドをブロックしているため、非同期的にそれを実行する必要があります。これは私のAsyncTaskの源です。
私はAsincTaskで自分のサービスを実行しましたが、正常に動作します。どうもありがとう。 – Alex
私の場合、彼らはサービス中の前景の通知です。私はasynctaskからの通知を開始し、毎秒Timerを使用して繰り返しますが、アラームマネージャのブロッキング通知は、これを修正する方法です。事前に感謝します。 –