gpt4 book ai didi

java - 如何防止每次设备方向更改时我的小部件重新更新?

转载 作者:行者123 更新时间:2023-12-01 14:02:28 25 4
gpt4 key购买 nike

我有一个 Android 小部件,它在其 onUpdate 方法中发出大量网络请求。我的小部件预计每天刷新一次。它总是使用 AsyncTask 进行非常繁重的 Canvas 绘制。

当我将设备从纵向转为横向,然后再转回纵向时,似乎会再次调用 onUpdate 方法,并再次发出所有繁重的网络请求。

如果可能的话,我可以阻止我的应用程序在方向更改时重新更新吗?

最佳答案

My widget is expected to refresh once a day

您对此没有完全的控制权。无论出于何种原因,欢迎主屏幕更频繁地触发 onUpdate() 调用。

Can I prevent my application from re-updating when the orientation is changed if it is possible?

不,但正如 Kuffs 所建议的,您可以减少更新过程的费用:

  • 将网络 I/O 结果缓存到磁盘
  • 将位图(我认为这是“非常重的 Canvas 绘图”结果)缓存到磁盘

或者,如果为时过早并且您确信主屏幕没有以某种方式丢失之前的 RemoteViews,则完全忽略 onUpdate() 调用。就我个人而言,我会使用缓存内容重新生成 RemoteViews,以防万一某些主屏幕实现丢弃了您之前的 RemoteViews(例如,进程终止并重新启动)。

此外,请使用 IntentService 而不是 AsyncTask 来处理长时间的 onUpdate() 工作。否则,一旦 onUpdate() 返回,您的进程就不会保留在内存中,并且您的进程可能会在工作完成之前终止。

关于java - 如何防止每次设备方向更改时我的小部件重新更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19249712/

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