Смотри, у меня есть следующий код:
Мое действие:
final Intent intent = new Intent(getApplicationContext(), MyService.class)
.putExtra(UploadService.EXTRA_RESULT_RECEIVER, new ResultReceiver(null) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
String result = resultData.getString(MyService.EXTRA_RESULT_SUCCESS);
...
imageView.setBackgroundDrawable(bitmap);// here my code fails
}
})
MyService:
Bundle b = new Bundle();
b.putString(EXTRA_RESULT_SUCCESS, response.toString());
resultReceiver.send(0, b);
И мое приложение не работает в режиме "(растровое изображение) "со следующим исключением:
11-13 16:25:38.986: ERROR/AndroidRuntime(3586): FATAL EXCEPTION: IntentService[MyService]
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
Но этого не происходит, когда я определяю приемник следующим образом (с обработчиком):
new ResultReceiver(new Handler()){.../*here goes the same code as in the first example. nothing has been changed*/}
Итак.Это не сбой, когда я передаю обработчик по умолчанию.И я спрашиваю Почему ?Мой код вызывается обоими способами, но когда не указан ни один обработчик, происходит сбой.Какое влияние оказывает Хэндлер?