IntentService类不在主UI线程上运行AsyncTask。 方法execute必须从主线程调用,当前推断的线程是worker

我最近发生了一个奇怪的问题。 我正在调用一个名为NotificationService的服务,它扩展了IntentService类。 现在在调用asynchronous任务的onHandleIntent(Intent intent)方法中。 代码如下:

@Override protected void onHandleIntent(Intent intent) { defPrefs = PreferenceManager.getDefaultSharedPreferences(this); //int fiveMinutes = 1000 * 60 * 5; //Setting an alarm to call AlarmScheduler service now. This alarm scheduler service will set next days alarm to show notifications //based on the weekly schedule as obtained from server. Intent i = new Intent(NotificationService.this, ScheduleAlarms.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getService(NotificationService.this, 0, i, PendingIntent.FLAG_CANCEL_CURRENT); AlarmManager alarmManager = (AlarmManager) NotificationService.this.getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC, Calendar.getInstance().getTimeInMillis(), pendingIntent);//Use AlarmManager.INTERVAL_DAY instead of int number here. //Check if locally notifications are enabled by the user then only show notification depending on //if there are any latest notifications to be shown. if(defPrefs.getBoolean(getString(R.string.notifications),true)) { NotificationAsyncTask httpAsyncTask1 = new NotificationAsyncTask(); httpAsyncTask1.mOnHttpResponseListener = new GetHomeResponse(intent); httpAsyncTask1.execute("http://" + HttpAsyncTask.IP_ADDRESS + "/v5/getResult"); }else{ Log.v("NotificationService","Disabled"); } } 

其中NotificationAsyncTask是在这个服务中定义的私有类。 现在我得到的错误方法执行必须从主线程调用,目前推断的线程是工人..我不明白这个执行方法是如何不在主线程上运行? 请帮忙。

Solutions Collecting From Web of "IntentService类不在主UI线程上运行AsyncTask。 方法execute必须从主线程调用,当前推断的线程是worker"

现在在调用asynchronous任务的onHandleIntent(Intent intent)方法中

onHandleIntent()在后台线程上被调用。

你不能从后台线程执行一个AsyncTask

更重要的是,你不需要一个AsyncTask 。 只要把你的doInBackground()代码放在onHandleIntent()