Android中startActivityForResult()的机制是什么?

时间:2010-08-15 20:42:48

标签: android multithreading

我有一项活动。在此活动中,我想使用startActivityForResult()启动另一个活动。据我所知,我的基本活动是在一个主GUI线程的进程中启动的。 但据我所知,startActivityForResult()是异步的,这意味着我的新活动将在不同的线程中执行。 我无法找到有关内部线程的信息。如果只有一个GUI线程,这些函数如何异步工作?

2 个答案:

答案 0 :(得分:5)

  

但据我了解,   startActivityForResult()是   异步,这意味着我的新   活动将在一个   不同的主题。

startActivityForResult()是异步的。这并不意味着您的新活动将在不同的线程中执行。如果新活动是您自己的应用程序的一部分,它将在主应用程序线程上运行,就像所有其他活动一样。

  

如果只有一个GUI线程,这些函数如何异步工作?

startActivityForResult()一样,

startActivity()不会立即执行任何操作。相反,它将消息放入消息队列,然后返回。当您将控制权返回给Android时(例如,您的onClick()方法结束),Android会返回处理该队列中的消息。当它到达您的开始活动消息时,它会启动新活动。

答案 1 :(得分:0)

在您的意图中以Extras的形式传递您想要的任何信息。

Intent i = new Intent(getApplicationContext(), YourClass.class);
i.putExtra("EXTRA_INFO", <your info here>);
startActivityForResult(i);

并在您的新活动中

protected void onCreate(Bundle savedInstanceState) {
      if(getIntent().hasExtra("EXTRA_INFO"){
         mString =  getIntent().getStringExtra("EXTRA_INFO");
      } 
}