当前位置:操作系统 > 安卓/Android >>

Android 后台Service : 向服务器发送心跳包

[java] 
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  补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,