package com.liyu.fakeweather.service; import android.app.IntentService; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.target.Target; import com.liyu.fakeweather.event.GirlsComingEvent; import com.liyu.fakeweather.model.Girl; import org.greenrobot.eventbus.EventBus; import java.io.Serializable; import java.util.List; /** * Created by liyu on 2016/11/9. */ public class GirlService extends IntentService { private static final String KEY_EXTRA_GIRL_FROM = "from"; private static final String KEY_EXTRA_GIRL_LIST = "data"; public GirlService() { super("GirlService"); } public static void start(Context context, String from, List<Girl> list) { Intent intent = new Intent(context, GirlService.class); intent.putExtra(KEY_EXTRA_GIRL_FROM, from); intent.putExtra(KEY_EXTRA_GIRL_LIST, (Serializable) list); context.startService(intent); } public static void stop(Context context) { context.stopService(new Intent(context, GirlService.class)); } @Override protected void onHandleIntent(Intent intent) { String from = intent.getStringExtra(KEY_EXTRA_GIRL_FROM); List<Girl> girls = (List<Girl>) intent.getSerializableExtra(KEY_EXTRA_GIRL_LIST); for (final Girl girl : girls) { Bitmap bitmap = null; try { bitmap = Glide.with(GirlService.this) .load(girl.getUrl()) .asBitmap() .diskCacheStrategy(DiskCacheStrategy.ALL) .into(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) .get(); } catch (Exception e) { e.printStackTrace(); } if (bitmap != null) { girl.setHeight(bitmap.getHeight()); girl.setWidth(bitmap.getWidth()); } EventBus.getDefault().post(new GirlsComingEvent(from, girl)); } } }