AlarmManager阻塞主线程

Ale*_*lex 2 android android-alarms android-asynctask

我已经实现了一个调用服务的AlarmManager.问题是虽然我在AsyncTask中启动它,但它阻止了主线程.这是我的AsyncTask的来源:

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);
    }
} 
Run Code Online (Sandbox Code Playgroud)

我需要异步执行它,因为它阻塞了我的主线程.

Bri*_*ham 7

在AsyncTask中设置警报无关紧要.警报管理器将始终在主线程上启动您的服务,因为这就是服务的工作方式.

要解决您的问题,您需要修改警报开始创建AsyncTask要运行的服务.