所以我一直致力于开发需要 BlockingQueue 在 UI 线程和处理程序线程之间进行通信的应用程序。所以我在第一个 Activity 的 onCreate 中创建了一个 LinkedBlockingQueue 和线程。
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();
我在下一个 Activity 期间也需要 BlockingQueue,因此将它们放入 Intent.putExtra 并启动下一个 Activity。
Intent myIntent = new Intent(v.getContext(),Start.class);
myIntent.putExtra("UIqueueRx",(Serializable) UIqueueRx);
myIntent.putExtra("UIqueueTx",(Serializable) UIqueueTx);
startActivity(myIntent);
因此,在我的新 Actyvity 中,我想从 Intent 中获取 BlockingQueue 并将其绑定(bind)到我的本地类。
@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");
//...
}
但是,如果我稍后使用队列将字符串发送到线程,则不会发生任何情况,字符串将保留在队列中。所以我尝试调试并提到队列的 id 号已更改,因此它们不再连接。我还检查了 Intent 本身,打开新 Activity 后就不再有 Extras 了。
有人提到我忽略的错误吗? 这种代码是否合理,或者是否存在垃圾邮件方式?
最佳答案
关于java - 启动新 Activity 后,序列化 Intent 附加似乎为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35870888/