Android中跨越ACTIVITY的全局线程

做个广告先,

PHP群(6848027)

C++群 (1414577)

汇编&反汇编群(15375777)

转载请注明出处~3Q~

关键:
Handle :类似C#的委托,C++中的函数指针 ,也可理解成CALLBACK
在做服务端消息循环查找时,如果一个ACTIVITY创建了一个线程。从这个ACTIVITY切换到另一个ACTIVITY时,上一个ACTIVITY会压入堆栈,那个线程会出现挂起状态,无法继续循环读取服务端数据,拿不到服务端数据了.

目前想到的方法是,创建一个专用的更新服务端消息类,然后每个页面实现一个Handle ,线程中发消息通知UI更新

先完成,再优化..

public class MyGetJobActiveThread {
 private static Context mContext = null;
 
   
    private Thread getJobMsgTheread = null;
   
    private static Handler mHandler = null;
   
   
   
    public void setContext(Context vContext)
    {
     this.mContext = vContext;
    }
 
    public void RegisterHandle(Handler hand)
    {
     this.mHandler = hand;
    }
   
    public void UnRegisterHandle(Handler hand)
    {
     this.mHandler  = null;
    }
   
   
    public void StartGetJobMsgThread()
    {
     getJobMsgTheread = new Thread(mGetJobMsg);
     getJobMsgTheread.start();
    }
 
 
 //检查服务端是否有消息
 private Runnable mGetJobMsg = new Runnable() {
  @Override
  public void run() {
   try {
        while(true)
       {


        //.......................................................
  
        if (!contens.equals("2"))
        {//有消息
             mHandler.sendEmptyMessage(MyConstants.JOBMSG01);
 
        }else
        {
         mHandler.sendEmptyMessage(MyConstants.JOBMSG02);
        }
       }
             
   }catch(Exception e){
    Log.e("err", e.getMessage().toString());
   }
   
  }
 };

  

java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/cfas/p/3113363.html