启动新活动

时间:2016-03-08 15:05:24

标签: java android

所以我已经在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了。

有人提到我忽略了一个错误吗? 这种代码甚至是理性的还是有一种小小的方式?

1 个答案:

答案 0 :(得分:0)

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

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

如果要保留Intent中的Extras,则应使用类字段。