解决方案 »
- 关于animation结束时,View OnClick触发位置的问题
- 关于短信搜索,sqlite数据库查询的问题
- 现在有没有可以反编译出android应用中的本地代码的工具?
- Android监听器问题-跪求高手指点为什么点击两次同一行打印的arg1的值不一样?
- getWindow()方法得到的是什么类的对象?
- Android下的OPENGL对纹理有没什么要求?要求的图片格式,位深度与尺寸对齐(尺寸奇偶数),要求的图片大小限制?
- 实现按钮监听器循环的问题
- android下能使用system()系统调用吗?
- 新人求助 关于滑动瓷砖游戏的一些问题
- 求大神解:付款页面如何能够跳转至支付宝客户端
- 还有半年时间,可以学好Android吗?
- [求助] 如何检测一个Activity是否在运行,内详,谢谢~
public class PollingService extends Service {
public static final String ACTION = "com.ysxj.RenHeDao.Service.PollingService";
private Notification mNotification;
private NotificationManager mManager;
private static int IsCON_TIMEOUT = 0;
private static final int CON_TIMEOUT = 60*1000;//无网络状态重试
private static final int ALIVE_INTERVAL=60*1000;//正常心跳
private static final int ALIVE_CHATINTERVAL=5*1000;//聊天页面心跳
private static int KEEP_ALIVE_INTERVAL=ALIVE_INTERVAL;
private static boolean isBroadcast=false;
private static String updatetime="";
private SysMessageListDao sListDao;
private ChatMessageListDao cListDao;
private String TAG="PollingService";
public static String MQTT_CLIENT_ID = "RenHeDao"; // These are the actions for the service (name are descriptive enough)
private static final String ACTION_START = MQTT_CLIENT_ID + ".START";
private static final String ACTION_STOP = MQTT_CLIENT_ID + ".STOP";
private static final String ACTION_KEEPALIVE = MQTT_CLIENT_ID + ".KEEP_ALIVE";
private static final String ACTION_RECONNECT = MQTT_CLIENT_ID + ".RECONNECT";
private static final String ACTION_SEND = MQTT_CLIENT_ID + ".SEND";
private static final String ACTION_WAITFORNETWORK = MQTT_CLIENT_ID + ".WAIT_FOR_NETWORK";
public static final String ACTION_STARTKEEPALIVE=MQTT_CLIENT_ID + ".STARTKEEPALIVES";
public static final String ACTION_CHATSTARTKEEPALIVE=MQTT_CLIENT_ID + ".CHATSTARTKEEPALIVES"; private Handler handler;
@Override
public IBinder onBind(Intent intent) {
return null;
}
// 发送心跳信息
public static void actionStartPing(Context ctx) {
isBroadcast=false;
Intent i = new Intent(ctx, PollingService.class);
i.setAction(ACTION_STARTKEEPALIVE);
ctx.startService(i);
}
// 聊天页面发送心跳信息
public static void actionChatStartPing(Context ctx) {
isBroadcast=true;
Intent i = new Intent(ctx, PollingService.class);
i.setAction(ACTION_CHATSTARTKEEPALIVE);
ctx.startService(i);
}
@Override
public void onCreate() { Logger.v(TAG, "MyQurData===onCreate=====!");
}
@Override
public void onStart(Intent intent, int startId) {
sListDao=new SysMessageListDao(PollingService.this);
cListDao=new ChatMessageListDao(PollingService.this);
Logger.v(TAG, "MyQurData===onStart=====!"+DateHelp.NowTime()); }
//启动服务接收信息
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
if (intent.getAction().equals(ACTION_STOP) == true) { //停止服务
this.stopSelf(0);
}else if (intent.getAction().equals(ACTION_WAITFORNETWORK) == true) { //等待网络
}else if (intent.getAction().equals(ACTION_STARTKEEPALIVE) == true) { //启动定时心跳信息
KEEP_ALIVE_INTERVAL=ALIVE_INTERVAL;
stopKeepAlives();
startKeepAlives();
} else if (intent.getAction().equals(ACTION_KEEPALIVE) == true) { //发送心跳信息
keepAlive();
}else if(intent.getAction().equals(ACTION_CHATSTARTKEEPALIVE) == true)
{
KEEP_ALIVE_INTERVAL=ALIVE_CHATINTERVAL;
stopKeepAlives();
startKeepAlives();
}
return startId;
} private synchronized void keepAlive() {
Logger.v(TAG, "keepAlive=====!"+DateHelp.NowTime());
MyQurData(MyApplication.getInstance().getUpdatetime());
}// Schedule application level keep-alives using the AlarmManager设置定时发送心跳信息
private synchronized void startKeepAlives() {
Logger.v(TAG, "MyQurData===startKeepAlives=====!"+DateHelp.NowTime()); Intent i = new Intent();
i.setClass(this, PollingService.class);
i.setAction(ACTION_KEEPALIVE);
//startService(i);
long triggerAtTime = SystemClock.elapsedRealtime();
PendingIntent pi = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME,triggerAtTime+KEEP_ALIVE_INTERVAL,KEEP_ALIVE_INTERVAL, pi);
}
//停止轮询服务
private synchronized void stopKeepAlives() {
Intent i = new Intent();
i.setClass(this, PollingService.class);
i.setAction(ACTION_KEEPALIVE);
//startService(i);
long triggerAtTime = SystemClock.elapsedRealtime();
PendingIntent pi = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
//取消正在执行的服务
alarmMgr.cancel(pi);
}
@Override
public void onDestroy() {
super.onDestroy();
System.out.println("Service:onDestroy");
}
private void MyQurData(String updatetime){
AsyncHttpRestClient.get(ChatAPI.DynamicNewsListURL(updatetime), jHandler);
}