【问题标题】:What is the mechanism behind startActivityForResult() in Android?Android 中 startActivityForResult() 背后的机制是什么?
【发布时间】:2010-08-15 20:42:47
【问题描述】:

我有一个活动。在这个活动中,我想使用 startActivityForResult() 开始另一个活动。我了解我的基本活动是在具有主 GUI 线程的进程中开始的。 但据我了解, startActivityForResult() 是异步的,这意味着我的新活动将在不同的线程中执行。 我找不到有关内部线程的信息。如果只有一个 GUI 线程,这些功能如何异步工作?

【问题讨论】:

    标签: android multithreading


    【解决方案1】:

    但据我所知, startActivityForResult() 是 异步的,这意味着我的新 活动将在一个 不同的线程。

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2017-09-20
        • 1970-01-01
        • 2015-01-14
        • 2022-11-17
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 2012-11-19
        • 2018-11-19
        相关资源
        最近更新 更多