1
我正在製作圖片通知。如何在服務中使用Universal-Image-Loader?
我使用GCM推送。通過GCM,我發送圖像URI。
當服務在Android應用了URI,由環球,圖片,裝載機,我嘗試在URI加載圖像。
但在這種情況下,我得到了一個錯誤:
java.lang.IllegalStateException: ImageLoader.displayImage(...) must be invoked from the main thread or from Looper thread
這是我服務的代碼如下:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()).build();
ImageLoader imageloader = ImageLoader.getInstance();
//ImageLoader.getInstance().destroy();
imageloader.init(config);
imageloader.loadImage(img_url, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
notificationWithBigPicture(GcmIntentService.this, PUSH_TITLE, PUSH_CONTENT, R.drawable.ic_stat_gcm, loadedImage, GcmMain.class);
}
});
public void notificationWithBigPicture(Context context, String title, String message, int icon, Bitmap banner, Class<?> activityClass) {
Log.i(TAG,"6666");
Intent intent = new Intent(context, activityClass);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(icon)
.setTicker(title)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true);
NotificationCompat.BigPictureStyle style = new NotificationCompat.BigPictureStyle();
//style.setBigContentTitle(title);
//style.setSummaryText(message);
style.bigPicture(banner);
builder.setStyle(style);
builder.setContentIntent(pendingIntent);
builder.setDefaults(Notification.DEFAULT_VIBRATE);
builder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, builder.build());
Log.v("9999","");
}
但是當碼流進入方法public void onLoading完成() , 應用程序已消失並顯示該錯誤。
什麼問題?
也許'loadImageSync(...)'更適合你嗎? – NOSTRA 2014-11-03 18:28:55
謝謝!我完全由你來解決這個問題,Nostras。我知道你做到了! – LKM 2014-11-03 18:53:06