通过捆绑发送 AsyncTask
Posted
技术标签:
【中文标题】通过捆绑发送 AsyncTask【英文标题】:Sending AsyncTask through bundle 【发布时间】:2017-05-27 06:37:39 【问题描述】:我想通过一个包发送一个 AsyncTask 来启动另一个片段。
因此,我创建了另一个实现可序列化并存储我的 AsyncTask 的类。我想把这个类放到一个包中,并用它开始另一个片段。
public class SerializableTask implements Serializable
private AsyncTask task;
public SerializableTask(AsyncTask task)
this.task = task;
public AsyncTask getTask() return this.task;
这行得通还是我需要覆盖 writeObject 或 readobject 方法?
【问题讨论】:
发送 asyncTask 是什么意思?是否要将任务发送到另一个 Fragment 执行? 是的。例如,片段 A 创建任务并使用我的类对其进行序列化,并使用包含我的类和任务的包启动片段 B。然后B运行任务 为什么不创建任务并在片段 B 中运行呢?如果您可以传达片段,我认为这是更好的解决方案。只需在启动时将所需的数据发送到 Fragment B。 此外,由于第一个的速度,在 android 中最好使用 Parcelable 而不是 Serializable。 但应该是通用片段。我认为几乎不可能将通用对象发送到片段。除此之外,如果我设法将属性发送到片段 B,因为它应该是通用的,所以 Java 中没有办法告诉异步任务的后执行方法应该做什么,对吧? 【参考方案1】:您使用的方法不正确。只需通过捆绑而不是任务发送数据,然后使用相同的数据重新创建任务。捆绑包仅用于传递数据。如果需要,您可以以数据的形式发送任务的状态,并在实现时以相同的状态重新启动任务。
【讨论】:
但是如何重新创建“doInBackground”、“onProgressUpdate”和“onPostExecute”方法? 只用旧数据创建新任务 我想我错过了一些东西..如果我的项目中有多个 AsyncTasks 并且 Frag A 创建其中一个并将数据提供给 Fragment B,那么 Fragment B 怎么知道要重新创建哪个任务,因为我可以先发送 AsyncTaskA,过一会儿我可以发送 AsyncTaskB(它们都是由其他片段创建的,都应该在 FragmentB 中执行)以上是关于通过捆绑发送 AsyncTask的主要内容,如果未能解决你的问题,请参考以下文章
具有多个入口点的 Webpack watch() - 为未更改的文件发送捆绑包?
Android - 在不同apk上的服务之间传递可序列化或可打包的捆绑包