安卓心跳

原创 2015年11月18日 18:31:30
private boolean runHeartFlag = true;
    private boolean currentMain = true;

    private String first = "FIRST";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initFrame();
        UmengUpdateAgent.update(this);

        setHeartBeat();
    }

    private ExecutorService mExecutorService;
    private Handler mHeartHandler = new Handler(new Handler.Callback() {

        @Override
        public boolean handleMessage(Message msg) {
            // 无权限,则弹出对话框,退出
            exitDialog();
            return true;
        }
    });

    /**
     * 设置心跳服务
     */
    private void setHeartBeat() {
        mExecutorService = Executors.newFixedThreadPool(4);
        imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId();
        mUserName = PreferencesUtils.getInstance(this).getString("userName");
        mUserService = new UserService();

        mExecutorService.execute(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (runHeartFlag) {
                    if (currentMain) {
                        if (HttpTool.isNetworkConnected(mActivity)) {
                            String result = mUserService.loginStatus(mUserName, imei, first);
                            first = "NOT_FIRST";
                            if (!TextUtils.isEmpty(result) && TextUtils.equals(result, "FAIL")) {
                                // 解析,判断状态,如果是无权限,则弹出对话框,退出
                                runHeartFlag = false;
                                mHeartHandler.sendEmptyMessage(0);
                            }
                        }
                        try {
                            Thread.sleep(10000);
                        } catch (Exception e) {
                            // TODO: handle exception
                            e.printStackTrace();
                        }
                    } 
                }
            }
        });
    }

    /**
     * 弹出对话框,告诉用户当前登录已失效
     * @param packetPath
     */
    private void exitDialog() {
        final AlertDialog dialog = new AlertDialog.Builder(this).create();
        dialog.show();
        dialog.setContentView(R.layout.dialog_relogin);
        dialog.setCancelable(false);

        Button btn_got_it = (Button) dialog.findViewById(R.id.btn_got_it);
        btn_got_it.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                dialog.cancel();
                // TODO Auto-generated method stub
                mActivity.finish();
                Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(i);
            }
        });
    }


    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        currentMain = true;
        if (mPacketFragment != null) {
            mPacketFragment.onActivityResume();
        }
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        currentMain = false;
        if (mPacketFragment != null) {
            mPacketFragment.onActivityPause();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        runHeartFlag = false;
    }

Android心跳包(一)——心跳机制

转自:http://blog.csdn.net/rabbit_in_android/article/details/50119809 在写之前,我们首先了解一下为什么android维护长连接...
  • github_27263697
  • github_27263697
  • 2017年11月21日 16:40
  • 362

android长连接心跳机制

在写之前,我们首先了解一下为什么android维护长连接需要心跳机制,首先我们知道,维护任何一个长连接都需要心跳机制,客户端发送一个心跳给 服务器,服务器给客户端一个心跳应答,这样就形成客户端服务器...
  • rabbit_in_android
  • rabbit_in_android
  • 2015年11月30日 22:21
  • 17896

Android属性动画实现心跳

Android属性动画实现心跳
  • zdmelon
  • zdmelon
  • 2017年01月24日 14:41
  • 642

Android socket通信的长连接与心跳检测

在Android开发中,我们可能需要和服务器保持连接不断开,这时需要用到socket通信的长连接,并且定时发送消息检测是否是连接状态——心跳检测。 我们需要一个客户端和一个服务器端的...
  • JJ583500596
  • JJ583500596
  • 2017年08月02日 17:13
  • 959

Socket长连接Android端心跳机制实现

前面用golang写的socket服务端请移步:http://blog.csdn.net/u010072711/article/details/760821761. 把socket链接和心跳功能都放在...
  • u010072711
  • u010072711
  • 2017年07月25日 22:36
  • 3626

【Android】Android心跳包详解

在做IM通信时,都会遇到这样一个概念:心跳包。又是一个比较抽象的概念,那么心跳包到底是什么呢? 之前做的机房预定系统里,使用的Socket和服务器通信。长连接测试服务器: Socket基本上都这么...
  • bless2015
  • bless2015
  • 2016年09月27日 14:04
  • 4331

android系列之——心跳包学习总结

**心跳包**:所谓心跳包,指的是客户端每隔一段时间发一个空消息给服务端,以防止服务端关闭已连接的端口;因酷似心脏一样有规律的跳动,也相当于是告诉服务端我这个端口的客户端还在线;所以称之为心跳包。 实...
  • qq_34264904
  • qq_34264904
  • 2016年08月07日 09:11
  • 1347

Android长连接,怎么处理心跳机制

心跳机制心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。当一台智能手机连上移动网络时,其实并没有真正连接上Internet,运营商分配给手机的IP其实是...
  • johnWcheung
  • johnWcheung
  • 2017年06月04日 20:53
  • 537

android 用UDP做的心跳连接 小示例

推荐几个不错的帖子:  基于Android平台的城市天气预报源码 http://www.eoeandroid.com/thread-193468-1-1.html Android 用opengl...
  • u011352918
  • u011352918
  • 2013年07月17日 14:42
  • 775

Android长连接心跳机制

在写之前,我们首先了解一下,为什么Android维护长连接需要心跳机制,首先我们知道,维护任何一个长连接都需要心跳机制,客户端发送一个心跳给服务器,服务器给客户端一个心跳应答,这样就形成客户端服务器的...
  • gaojinshan
  • gaojinshan
  • 2016年08月16日 16:16
  • 1978
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安卓心跳
举报原因:
原因补充:

(最多只允许输入30个字)