Android,如何将从主活动调用的异步任务中的数据传递到辅助活动?

发布于 2024-11-19 12:05:06 字数 301 浏览 0 评论 0原文

我的应用程序有一个主要活动“A”和一个次要活动“B”(通过单击按钮调用)。 就在活动 B 启动之前,活动 AI 运行一个异步任务以从远程 Web 服务获取 xml 数据。 然后我如何将 xml 数据传递给活动 B?我不能使用类似的东西

intent.putExtra("xmlData", xmlData);

,因为当意图启动时,xmlData 是空的,但是......

或者,我使用了错误的方法吗?我决定从活动 A 而不是 B 运行异步任务,因为我想我可以节省一些等待活动 B 中的远程数据的时间...

My application has a main activity "A", and a secondary one, "B" (called on a button click).
Just before activity B is started, from activity A I run an async task to get xml data from a remote web service.
How do I then pass xml data to activity B? I can't use something like

intent.putExtra("xmlData", xmlData);

since, when intent is started, xmlData is empty, yet...

Or, am I using a wrong approach? I decided to run the async task from activity A, instead than B, since I suppose I can save some time waiting for remote data in activity B...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泅渡 2024-11-26 12:05:06

通过 Intent.putExtra() 将 url 或唯一数据(例如 id,如果 url 相同)从 A 发送到 Activity B,并在 onCreate B 活动时使用 AsyncTask 获取数据。 onPreExecute 中的 ProgressDialog 也可能就位。

然后,如果有任何类似的任务(例如获取、解析和呈现),您可以重用 Activity B。

Send the url, or unique data such as id if the url is the same, to the Activity B from A through intent.putExtra(), and fetch the data with AsyncTask as you onCreate the B activity. A progressDialog in onPreExecute might be in place as well.

Then you can reuse the Activity B if there is any similar task e.g. fetch, parse and present.

梦在深巷 2024-11-26 12:05:06

创建意图并在 AsyncTask 完成后在 onPostExecute() 内的 startActivity 中将其触发。

另外,xmlData 是字符串吗?如果是这样就好了,否则你需要实现Parcelable。顺便说一句,您应该小心您的标识符。您传递给 putExtra 的标识符中的拼写错误或大小写错误可能会导致您找不到它。

Create the intent and fire it off in startActivity inside onPostExecute() after your AsyncTask completes.

Also, is xmlData a String? That's fine, if so, otherwise you need to implement Parcelable. As an aside, you should be careful with your identifiers. A typo or incorrect case in the identifier you pass to putExtra could cause you to not find it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文