我有一个Android小部件,它在onUpdate
方法中提供了相当多的网络请求。我的小部件预计每天刷新一次。它始终使用Canvas
进行非常繁重的AsyncTask
绘图。
当我将设备从纵向转向横向并返回纵向时,似乎再次调用onUpdate
方法,并再次发出所有重型网络请求。
如果可能的话,我可以在更改方向时阻止我的应用程序重新更新吗?
答案 0 :(得分:1)
我的小部件预计每天刷新一次
您无法完全控制它。欢迎主屏幕更频繁地触发onUpdate()
电话,无论出于何种原因。
如果可能的话,我可以在更改方向时阻止我的应用程序重新更新吗?
不,但正如Kuffs建议的那样,你可以减少更新过程的费用:
或者,完全忽略onUpdate()
来电,如果太快,您确信主屏幕没有以某种方式丢失之前的RemoteViews
。就个人而言,我会使用缓存内容重新生成RemoteViews
,以防某些主屏幕实现丢弃您之前的RemoteViews
(例如,流程已终止并重新启动)。
另外,请使用IntentService
而不是AsyncTask
来处理长期onUpdate()
工作。除非onUpdate()
返回,否则没有任何内容可以将您的流程保留在内存中,并且您的流程可能会在您的工作完成之前终止。