gpt4 book ai didi

java - 启动新 Activity 后,序列化 Intent 附加似乎为空

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:34 24 4
gpt4 key购买 nike

所以我一直致力于开发需要 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 了。

有人提到我忽略的错误吗?这种代码是否合理,或者是否存在垃圾邮件方式?

最佳答案

onCreate() 方法仅在创建 Activity 时调用一次。如果稍后暂停、恢复或重新启动,它将跳过 onCreate 方法。

http://developer.android.com/images/activity_lifecycle.png

如果你想保留 Intent 中的 Extras,你应该使用类字段。

关于java - 启动新 Activity 后,序列化 Intent 附加似乎为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35870888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com