gpt4 book ai didi

java - 使用 ProgressDialog 进行 IntentService 操作?

转载 作者:行者123 更新时间:2023-12-01 23:34:27 24 4
gpt4 key购买 nike

我已经实现了由 Activity 通过 IntentService 发起的网络操作。

但是,在下载操作期间,我想通过 ProgressDialog 来阻止 UI。

问题在于,ProgressBar 有一个 Activity 的句柄,它与 Activity 强耦合,如果在操作过程中更改屏幕方向,则会导致问题。

如果 Activity A 启动 IntentService B,我可以在后面引入一个 ProgressDialog。但是如果在调用我的接收器之前(在网络操作完成之前),方向发生变化;我最终将得到对 ProgressDialog 的孤立引用,因此无法将其关闭。

有什么建议吗?

最佳答案

  1. 我不认为你真正的意思是“阻止用户界面”;我认为你的意思是“放置一个无限期的 Activity 指示器并忽略输入,直到某件事完成”。
  2. 如果是这样,请在 UI 中使用 ProgressBar 小部件。从小部件的 android:visibility="GONE"开始。当你开始后台工作时,设置 android:visibility="VISIBLE"并禁用你想要阻止的 UI 控件。当后台工作完成后,反转一切。
  3. 要在后台工作完成后返回 Activity,请实现两个选项:将内容 Intent 发送到您的 Activity 的通知,并使用您的 Activity 的接收器广播 Intent。如果您的 Activity 在后台,则会出现通知,通过单击该通知,用户将返回到您的 Activity 。如果您的 Activity 在前台,请在 onReceive() 中获取广播 Intent。无论哪种方式,都会提醒用户后台工作已完成(并关闭通知)。
  4. 使用 onPause() 和 onResume() 通过保存或恢复可见性以及启用/禁用设置来维护 UI 状态。

这样做,当 IntentService 运行时你的 Activity 发生什么并不重要。

您还应该看看 Android 培训类(class) Transferring Data Without Draining the Battery 。它将帮助您进行高效、用户友好的网络操作。还有很多有关在移动设备上正确使用网络的其他提示。

关于java - 使用 ProgressDialog 进行 IntentService 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18924385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com