package org.qii.weiciyuan.othercomponent; import android.app.Notification; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.text.TextUtils; import org.qii.weiciyuan.R; import org.qii.weiciyuan.bean.EmotionBean; import org.qii.weiciyuan.dao.emotions.EmotionsDao; import org.qii.weiciyuan.support.database.DatabaseManager; import org.qii.weiciyuan.support.error.WeiboException; import org.qii.weiciyuan.support.file.FileLocationMethod; import org.qii.weiciyuan.support.file.FileManager; import org.qii.weiciyuan.support.http.HttpUtility; import org.qii.weiciyuan.support.lib.MyAsyncTask; import java.util.ArrayList; import java.util.List; /** * User: qii * Date: 12-9-24 */ @Deprecated public class DownloadEmotionsService extends Service { private String token; private DownloadTask task; @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { token = intent.getStringExtra("token"); if (task == null) { task = new DownloadTask(); task.executeOnExecutor(MyAsyncTask.THREAD_POOL_EXECUTOR); } return super.onStartCommand(intent, flags, startId); } class DownloadTask extends MyAsyncTask<Void, Integer, Void> { Notification notification; final int NOTIFICATION_ID = 2; WeiboException e; int size; @Override protected void onPreExecute() { super.onPreExecute(); Notification.Builder builder = new Notification.Builder(DownloadEmotionsService.this) .setTicker(getString(R.string.download_emotions)) .setContentTitle(getString(R.string.weibo_emotions)) .setContentText(getString(R.string.background_downloading)) .setProgress(0, 100, false) .setSmallIcon(R.drawable.download_light); notification = builder.getNotification(); startForeground(NOTIFICATION_ID, notification); } @Override protected Void doInBackground(Void... params) { int now = 0; try { EmotionsDao dao = new EmotionsDao(token); List<EmotionBean> list = dao.getEmotions(); List<EmotionBean> needList = new ArrayList<EmotionBean>(); for (EmotionBean bean : list) { if (TextUtils.isEmpty(bean.getCategory())) { needList.add(bean); } } size = needList.size(); DatabaseManager.getInstance().addEmotions(needList); // GlobalContext.getInstance().setEmotions(DatabaseManager.getInstance().getEmotionsMap()); for (EmotionBean bean : needList) { String url = bean.getUrl(); String path = FileManager.getFilePathFromUrl(url, FileLocationMethod.emotion); HttpUtility.getInstance().executeDownloadTask(url, path, null); now++; publishProgress(now); } // size = list.size(); // // DatabaseManager.getInstance().addEmotions(list); // GlobalContext.getInstance().setEmotions(DatabaseManager.getInstance().getEmotionsMap()); // // for (EmotionBean bean : list) { // String url = bean.getUrl(); // String path = FileManager.getFilePathFromUrl(url, FileLocationMethod.emotion); // // HttpUtility.getInstance().executeDownloadTask(url, path, null); // now++; // publishProgress(now); // } } catch (WeiboException e) { this.e = e; cancel(true); } return null; } @Override protected void onProgressUpdate(Integer... values) { if (values.length > 0) { int data = values[0]; Notification.Builder builder = new Notification.Builder(DownloadEmotionsService.this) .setTicker(getString(R.string.download_emotions)) .setContentTitle(getString(R.string.weibo_emotions)) .setContentText(getString(R.string.background_downloading)) .setProgress(size, data, false) .setNumber(size - data) .setSmallIcon(R.drawable.download_light); notification = builder.getNotification(); startForeground(NOTIFICATION_ID, notification); } } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); stopForeground(true); stopSelf(); } @Override protected void onCancelled(Void aVoid) { super.onCancelled(aVoid); stopForeground(true); stopSelf(); } } }