场景: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;