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());
   }
    
  }
 };

  

posted @   方东信  阅读(1323)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示