package com.myqsc.mobile2.network;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
import com.myqsc.mobile2.MyBaseApplication;
import com.myqsc.mobile2.uti.BroadcastHelper;
import com.myqsc.mobile2.uti.LogHelper;
import com.myqsc.mobile2.uti.Utility;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by richard on 13-9-3.
*/
public class UpdateHelper {
Context mContext = null;
ExecutorService executorService = null;
public UpdateHelper(Context context) {
this.mContext = context;
executorService = Executors.newFixedThreadPool(3);
}
public void UpdateAll(){
final int[] len = {DataUpdater.name.size()};
final Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
if (message.obj != null) {
--len[0];
LogHelper.d(message.getData().getString("key") + "update finished");
if (!messageChecker((String) message.obj)) {
mContext.getSharedPreferences(Utility.PREFERENCE, 0)
.edit()
.putString(message.getData().getString("key"), (String) message.obj)
.commit();
}
Intent intent = new Intent(BroadcastHelper.BROADCAST_CARD_REDRAW);
intent.putExtra("card", message.getData().getString("key"));
mContext.sendBroadcast(intent);
//更新完后通知所有卡片重绘
}
if (len[0] == 0) {
Intent intent = new Intent(BroadcastHelper.BROADCAST_ALL_UPDATED);
mContext.sendBroadcast(intent);
}
return true;
}
});
for(String key : DataUpdater.name.keySet()) {
executorService.submit(new DataUpdaterRunnable(key,
handler,
mContext));
}
}
/**
* 判断这个json 中是否有msg,有的话toast出来,并返回true,没有返回false
* @param data
* @return
*/
public static boolean messageChecker(String data) {
try {
if (data.length() < 2) {
return false;
}
JSONObject jsonObject = new JSONObject(data);
String message = jsonObject.getString("msg");
if (MyBaseApplication.getAppContext() != null) {
Toast.makeText(MyBaseApplication.getAppContext(), message, Toast.LENGTH_LONG).show();
}
return true;
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
public void pullToRefresh(final Handler handler){
final int[] len = {DataUpdater.name.size()};
for (String key : DataUpdater.name.keySet()) {
executorService.submit(new DataUpdaterRunnable(key, handler, mContext));
}
}
public void update(final Handler handler, final String key) {
executorService.submit(new DataUpdaterRunnable(key,
handler,
mContext));
}
}