所以我已经在App上工作,需要一个BlockingQueue来在UI线程和处理程序线程之间进行通信。所以我在我的第一个Activity的onCreate中创建了一个LinkedBlockingQueue和Thread。
BlockingQueue<String> UIqueueRx = new LinkedBlockingDeque<String>();
BlockingQueue<String> UIqueueTx = new LinkedBlockingDeque<String>();
final main m = new main(UIqueueRx,UIqueueTx);
Thread myMainThread = new Thread(m);
myMainThread.setName("AdapterThread");
myMainThread.start();
我在下一次Actyvities期间也需要BlockingQueue,所以将它们放入Intent.putExtra和startet next Activity。
Intent myIntent = new Intent(v.getContext(),Start.class);
myIntent.putExtra("UIqueueRx",(Serializable) UIqueueRx);
myIntent.putExtra("UIqueueTx",(Serializable) UIqueueTx);
startActivity(myIntent);
所以在我的新Actyvity中,我想把Intent的BlockingQueue绑定到我当地的班级。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
BlockingQueue<String> UIqueueRx = (BlockingQueue<String>) getIntent().getSerializableExtra("UIqueueRx");
BlockingQueue<String> UIqueueTx = (BlockingQueue<String>) getIntent().getSerializableExtra("UIqueueTx");
//...
}
但是如果我以后使用Queue将Strings发送给线程没有任何问题,那么String就会保留在Queue中。所以我尝试调试并提到队列的id号已更改,因此它们不再连接。我也检查了Intent本身,在打开新活动后,再没有Extras了。
有人提到我忽略了一个错误吗? 这种代码甚至是理性的还是有一种小小的方式?