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

标签 java android

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

相关文章:

java - 如何使用 LambdaMetaFactory 在运行时创建代理对象?

java - 矩形之间的碰撞检测(无重叠)- libgdx

java - 声明一堆相似变量的最少行数

java - java中从 native 邮件服务器发送邮件到gmail或其他邮件服务器

android - 向上滚动时隐藏 ViewPager 选项卡。

android - 如果字符串文本是从右到左写入的,是否可以在 android/Java 中识别?

java - 如何在 PCI 调制解调器上有来电时获取电话号码

javascript - Android原生分享菜单: Detect supporting browsers

android - MediaPlayer setOnPreparedListener 没有被第二次调用

java - 安卓/Java : How to code if-statements based on localisation-settings?