不同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--的数据传递