2010-08-15 40 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"); 
     } 
}