2010-08-15 37 views
7

我有一个活动。在这个活动中,我想用startActivityForResult()开始另一个活动。我知道我的基本活动是在一个主GUI线程的进程内开始的。 但据我所知,startActivityForResult()是异步的,这意味着我的新活动将在不同的线程中执行。 我找不到关于里面线程的信息。如果只有一个GUI线程,这些函数如何异步工作?Android中startActivityForResult()的机制是什么?

回答

5

但据我了解, startActivityForResult()是 asynchronious这意味着我的新 活动将在 不同的线程来执行。

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

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

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

0

通过任何你想要的信息在你的意图中的附加形式。

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"); 
     } 
}