Android 后台Service : 向服务器发送心跳包
来源:互联网 发布:淘宝助理5系列教程 编辑:程序博客网 时间:2024/05/06 03:10
- public class HeartbeatService extends Service implements Runnable
- {
- private Thread mThread;
- public int count = 0;
- private boolean isTip = true;
- private static String mRestMsg;
- private static String KEY_REST_MSG = "KEY_REST_MSG";
- @Override
- public void run()
- {
- while (true)
- {
- try
- {
- if (count > 1)
- {
- Log.i("@qi", "offline");
- count = 1;
- if (isTip)
- {
- //判断应用是否在运行
- ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
- List<RunningTaskInfo> list = am.getRunningTasks(3);
- for (RunningTaskInfo info : list)
- {
- if (info.topActivity.getPackageName().equals("org.yhn.demo"))
- {
- //通知应用,显示提示“连接不到服务器”
- Intent intent = new Intent("org.yhn.demo");
- intent.putExtra("msg", true);
- sendBroadcast(intent);
- break;
- }
- }
- isTip = false;
- }
- }
- if (mRestMsg != "" && mRestMsg != null)
- {
- //向服务器发送心跳包
- sendHeartbeatPackage(mRestMsg);
- count += 1;
- }
- Thread.sleep(1000 * 3);
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
- }
- private void sendHeartbeatPackage(String msg)
- {
- HttpGet httpGet = new HttpGet(msg);
- DefaultHttpClient httpClient = new DefaultHttpClient();
- // 发送请求
- HttpResponse httpResponse = null;
- try
- {
- httpResponse = httpClient.execute(httpGet);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- if (httpResponse == null)
- {
- return;
- }
- // 处理返回结果
- final int responseCode = httpResponse.getStatusLine().getStatusCode();
- if (responseCode == HttpStatus.SC_OK)
- {
- //只要服务器有回应就OK
- count = 0;
- isTip = true;
- }
- else
- {
- Log.i("@qi", "responseCode " + responseCode);
- }
- }
- @Override
- public IBinder onBind(Intent intent)
- {
- return null;
- }
- @Override
- public void onCreate()
- {
- super.onCreate();
- }
- @Override
- public void onDestroy()
- {
- super.onDestroy();
- }
- public void onStart(Intent intent, int startId)
- {
- Log.i("@qi", "service onStart");
- //从本地读取服务器的URL,如果没有就用传进来的URL
- mRestMsg = getRestMsg();
- if (mRestMsg == null || mRestMsg == "")
- {
- mRestMsg = intent.getExtras().getString("url");
- }
- setRestMsg(mRestMsg);
- mThread = new Thread(this);
- mThread.start();
- count = 0;
- super.onStart(intent, startId);
- }
- public String getRestMsg()
- {
- SharedPreferences prefer = getSharedPreferences("settings.data", Context.MODE_PRIVATE);
- Log.i("@qi", "getRestMsg() " + prefer.getString(KEY_REST_MSG, ""));
- return prefer.getString(KEY_REST_MSG, "");
- }
- public void setRestMsg(String restMsg)
- {
- SharedPreferences prefer = getSharedPreferences("settings.data", Context.MODE_PRIVATE);
- SharedPreferences.Editor editor = prefer.edit();
- editor.putString(KEY_REST_MSG, restMsg);
- editor.commit();
- }
- }
启动Service:
- Intent serviceIntent = new Intent("HeartbeatService");
- serviceIntent.putExtra("url",url);
- startService(serviceIntent);
最后别忘了注册Server和GET_TASKS
- <service
- android:name=".demo.HeartbeatService"
- android:label="QServer"
- android:persistent="true" >
- <intent-filter>
- <action android:name="HeartbeatService" />
- </intent-filter>
- </service>
- <uses-permission android:name="android.permission.GET_TASKS" />
来源:http://blog.csdn.net/vestigge/article/details/8563447
- Android 后台Service : 向服务器发送心跳包
- Android 后台Service : 向服务器发送心跳包
- Android 后台Service : 向服务器发送心跳包
- Android 后台Service : 向服务器发送心跳包
- Android 后台Service : 向服务器发送心跳包
- Android向服务器发送心跳服务
- Android-向服务器发送图片
- Android service 心跳检测
- swoole_client定时发送心跳包
- IOS 后台定位并向服务器发送当前位置
- 【转】IOS 后台定位并向服务器发送当前位置
- android 心跳包
- android通过httpPost向服务器发送请求
- android通过httpPost向服务器发送请求 .
- android通过httpPost向服务器发送请求
- mina心跳包:客户端发送心跳包,服务端响应心跳包
- 【Android】Android心跳包详解
- 判断Socket连接失效,发送心跳包
- 353. Penny wise, pound foolish. 贪小便宜吃大亏
- 也谈“指定的 SOAPAction 无效”异常的解决办法 ”
- 利用DOM操作XML
- CF-51B - bHTML Tables Analisys(easy+栈)
- 自定义java Doclet的调试
- Android 后台Service : 向服务器发送心跳包
- Essay-清晨雪后的北京街边
- osggameoflife例子
- 黑马程序员——java编程那些事儿____多线程(二)
- 深入浅出jQuery (五) 如何自定义UI-Dialog?
- parse push 消息推送学习笔记(Android消息推送解决方案 备选)
- hive安装测试及Hive 元数据的三种存储方式
- 图像处理--边沿检测与提取,轮廓跟踪
- iOS开发那些事-Git在Xcode中的配置与使用