package com.mfh.comna.androidService;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import com.mfh.comna.comn.logic.BaseService;
import com.mfh.comna.comn.logic.IAndroidService;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Administrator on 2014/11/10.
* app统一的android端的service
*/
public class ComnaAndroidService extends Service{
private Map<BaseService, Long> serviceLongMap = new HashMap<BaseService, Long>();
private boolean isRunning = false;
private long time = 5*60*1000;
private SharedPreferences sp;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
for (Map.Entry<BaseService, Long> entry : serviceLongMap.entrySet()){
if (System.currentTimeMillis() - sp.getLong(entry.getKey().getClass().getSimpleName()+ "pre" ,0) >= entry.getValue()){
entry.getKey().syncDataFromFrontToEnd(2, null);
edit.putLong(entry.getKey().getClass().getSimpleName()+ "pre", System.currentTimeMillis());
edit.commit();
}
}
if (isRunning) {
handler.sendEmptyMessageDelayed(0, time / 4);
}
}
};
private SharedPreferences.Editor edit;
@Override
public IBinder onBind(Intent intent) {
return new MyBinder();
}
@Override
public void onCreate() {
super.onCreate();
sp = getSharedPreferences("config", Context.MODE_PRIVATE);
edit = sp.edit();
isRunning = true;
handler.sendEmptyMessage(0);
}
@Override
public void onDestroy() {
super.onDestroy();
isRunning = false;
}
public void setServiceLongMap(BaseService service, long time) {
if (serviceLongMap.containsKey(service))
return;
if (time < this.time)
this.time = time;
serviceLongMap.put(service,time);
edit.putLong(service.getClass().getSimpleName() + "delay", time); //延迟时间
edit.putLong(service.getClass().getSimpleName() + "pre", System.currentTimeMillis()); //记录当前时间
edit.commit();
service.syncDataFromFrontToEnd(2, null);
}
public class MyBinder extends Binder implements IAndroidService{
@Override
public void setService(BaseService service, long time) {
setServiceLongMap(service,time);
}
}
}