不同Activity之间传递线程

  场景:Android由Activiy A创建Activiy B时 ,A创建的线程B中依然需要调用,这时候需要在两个activity之间传递线程的信息。

  解决:

    方式一:线程自己维护自己的静态句柄(比较好,降低耦合)。

    方式二:A将线程信息传给B,因为Activity.startActivity方法只能传递Intent对象,函数原型:

    @Override
    public void startActivity(Intent intent) {
        this.startActivity(intent, null);
    }

    Intent只支持Key-Value类似的数据传递,这里的思路是传递线程id,然后在B 中遍历线程栈,找到该id对应的线程实例。

    A中代码:

    Intent intent=new Intent();
    intent.setClass(A.this, B.class);  //设置intent
    intent.putExtra("tid", myThread.getId());
    this.startActivity(intent);

    B中代码:

    //取得线程实例
    Long tid= getIntent().getLongExtra("tid", 0);
    for (Thread t : Thread.getAllStackTraces().keySet())
        if (t.getId()==tid)  myThread=(MyThread)t;
原文地址:https://www.cnblogs.com/the-owl/p/5560750.html