不同Activity之间传递线程

Posted the_owl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不同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;

 

以上是关于不同Activity之间传递线程的主要内容,如果未能解决你的问题,请参考以下文章

Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段

如何将变量从 Activity 传递到 Fragment,并将其传回?

在另一个活动托管的片段之间传递数据的最佳实践

(Android数据传递)Service和Activity之间-- 借助BroadcastReceiver--的数据传递

将 Fragment 之间的数据传递给 Activity

从另一个活动的活动中的片段传递数据