【问题标题】:how to pass thread object to new activity and get it back at the and如何将线程对象传递给新活动并将其取回
【发布时间】:2016-11-18 11:54:10
【问题描述】:

是否可以使用意图将线程对象传递给新活动进行一些处理,然后将线程返回到主活动?

感谢您的帮助。

【问题讨论】:

  • 排序答案...否。使用服务,更具体地说是使用工作线程的 IntentService/BroadcastReceiver,或 AsyncTask .. 或 RxJava ..
  • 嗨,我是 android 的新手,但是 30 年的多种语言编程经验。
  • 我还不太清楚如何使用 stakoverflow :))。所以我为错误的发布道歉。当我说传递线程意味着传递类的实例时,如何扩展线程。是否可以通过引用活动来传递此类?
  • Activity 有独立的生命周期,我认为你必须更好地解释你的用例场景——我敢肯定,一旦你对平台有了更好的了解,它就会变得简单。例如,如果您想从活动 A 启动活动 B,并将结果返回给活动 A(A 显式依赖活动 B 的结果),那么您将使用 startActivityForResult 而不是 startActivity - startActivityForResult 的示例:@ 987654321@第二个activity可以处理任何线程,我建议AsyncTaskLoader
  • Intents 只允许序列化对象(框架使用单独的进程从内存传递序列化对象,因此与您的应用程序/活动不同的内存地址空间),因此您不能将指针传递给目的。如果您想在活动之间传递对象,那么我建议您使用Parcelable 接口(或可序列化)。注意:不推荐用于像 Lists 这样的大数据集,因为可以编组/解组的数据量有限制(您将收到 BINDER TRANSACTION FAILED 消息)。

标签: android android-activity parameter-passing


【解决方案1】:

这与Android Activity参数传递的概念相悖。最好不要这样做。使用Services 或使用ThreadAsyncTask 创建独立类并与之交互,但不要将线程对象传递给活动。

【讨论】:

  • 值得注意的是,单独使用 Service 意味着任务仍将在主 UI 线程上执行 - IntentService 创建一个自动工作线程。
  • 是时候阅读文档了。因此,如果我在主要活动中使用一项服务,而在其他活动中使用一项服务,我可以向主要活动发送消息以执行我需要的方法。
  • 其实使用Service更像是在Unix下使用IPC?如果我们认为每个新活动都是一个进程?
  • 有没有办法在 android 中使用共享内存(如 semaphore)进行活动通信?
  • 对不起,它更像是广播意图,看起来像 IPC。并且可以在Service内部使用。
【解决方案2】:

您可以为处理创建一个侦听器来代替它。处理完成后,您将响应发送到侦听器(由您的主要活动实现)。您可以使用 AsyncTask (onPostExecute) 来做到这一点

【讨论】:

    【解决方案3】:

    这是可能的。但这不是好的做法,也不是有效的。正如@Andriy Omelchenko 提到的,使用Thread(如果您知道如何自己管理线程以与您的活动交互)或AsyncTask(专门为与UI 交互而设计。)请参阅this 链接了解线程.

    【讨论】:

      【解决方案4】:

      我实际上只有在需要传递数据而不是类引用时才有效?

      所以最好是从子活动开始获取信息和动作,并为主要活动中的每个特征创建一个类。所以我可以做任何我想做的和我需要的。除非一切都可以在儿童活动中完成。我们不能与活动共享工作。它启动和停止没有进程通信和实例共享。

      对吗?

      【讨论】:

        【解决方案5】:

        我认为您可以删除该帖子,因为我发现这个问题确实被问得很糟糕。

        我找到了一个非常简单的解决方案,可以在不通过活动传递线程的情况下管理我想做的事情。我其实根本没有必要。

        对不起,混乱。我还不熟悉android。

        我使用接收器从其他活动接收意图,非常简单,在主活动内完成工作。

        再次问候和抱歉。

        【讨论】:

          猜你喜欢
          • 2011-08-16
          • 2020-05-05
          • 1970-01-01
          • 2019-07-01
          • 1970-01-01
          • 2012-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多