Java 如何防止每次设备';谁的方向改变了?
我有一个Android小部件,在它的Java 如何防止每次设备';谁的方向改变了?,java,android,android-widget,Java,Android,Android Widget,我有一个Android小部件,在它的onUpdate方法中发出相当多的网络请求。我的小部件预计每天刷新一次。它总是使用AsyncTask进行非常繁重的Canvas绘图 当我将设备从纵向转向横向,再回到纵向时,似乎会再次调用onUpdate方法,并再次发出所有那些繁重的网络请求 如果可能的话,我是否可以在方向更改时阻止我的应用程序重新更新 我的小部件预计每天刷新一次 你不能完全控制它。无论出于何种原因,欢迎主屏幕更频繁地触发onUpdate()调用 如果可能的话,我是否可以在方向更改时阻止我的应用
onUpdate
方法中发出相当多的网络请求。我的小部件预计每天刷新一次。它总是使用AsyncTask
进行非常繁重的Canvas
绘图
当我将设备从纵向转向横向,再回到纵向时,似乎会再次调用onUpdate
方法,并再次发出所有那些繁重的网络请求
如果可能的话,我是否可以在方向更改时阻止我的应用程序重新更新
我的小部件预计每天刷新一次
你不能完全控制它。无论出于何种原因,欢迎主屏幕更频繁地触发onUpdate()
调用
如果可能的话,我是否可以在方向更改时阻止我的应用程序重新更新
不,但正如Kuffs所建议的,您可以减少更新过程的费用:
- 将网络I/O结果缓存到磁盘
- 将位图(我认为这是“非常沉重的画布绘制”的结果)缓存到磁盘
onUpdate()
调用,如果调用太早,并且您确信主屏幕没有丢失以前的远程视图。就我个人而言,我会使用缓存的内容重新生成远程视图
,以防某些主屏幕实现放弃了以前的远程视图
(例如,进程被终止并重新启动)
另外,请使用IntentService
,而不是AsyncTask
,来处理长onUpdate()
工作。一旦onUpdate()
返回,则不会将进程保留在内存中,否则进程可能会在工作完成之前终止。缓存数据和上次更新时间。仅在经过一定时间后更新,否则使用缓存数据。