【发布时间】:2010-08-15 20:42:47
【问题描述】:
我有一个活动。在这个活动中,我想使用 startActivityForResult() 开始另一个活动。我了解我的基本活动是在具有主 GUI 线程的进程中开始的。 但据我了解, startActivityForResult() 是异步的,这意味着我的新活动将在不同的线程中执行。 我找不到有关内部线程的信息。如果只有一个 GUI 线程,这些功能如何异步工作?
【问题讨论】:
我有一个活动。在这个活动中,我想使用 startActivityForResult() 开始另一个活动。我了解我的基本活动是在具有主 GUI 线程的进程中开始的。 但据我了解, startActivityForResult() 是异步的,这意味着我的新活动将在不同的线程中执行。 我找不到有关内部线程的信息。如果只有一个 GUI 线程,这些功能如何异步工作?
【问题讨论】:
但据我所知, startActivityForResult() 是 异步的,这意味着我的新 活动将在一个 不同的线程。
startActivityForResult() 是异步的。这并不意味着您的新活动将在不同的线程中执行。如果新 Activity 是您自己的应用程序的一部分,它会在主应用程序线程上运行,就像您的所有其他 Activity 一样。
如果只有一个 GUI 线程,这些函数如何异步工作?
startActivityForResult() 和startActivity() 一样,不会立即执行任何操作。相反,它将消息放入消息队列,然后返回。当您将控制权返回给 Android 时(例如,您的 onClick() 方法结束),Android 会返回处理来自该队列的消息。当它收到您的启动活动消息时,它会启动新活动。
【讨论】:
在 Intent 中以 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");
}
}
【讨论】: