Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止每次设备';谁的方向改变了?_Java_Android_Android Widget - Fatal编程技术网

Java 如何防止每次设备';谁的方向改变了?

Java 如何防止每次设备';谁的方向改变了?,java,android,android-widget,Java,Android,Android Widget,我有一个Android小部件,在它的onUpdate方法中发出相当多的网络请求。我的小部件预计每天刷新一次。它总是使用AsyncTask进行非常繁重的Canvas绘图 当我将设备从纵向转向横向,再回到纵向时,似乎会再次调用onUpdate方法,并再次发出所有那些繁重的网络请求 如果可能的话,我是否可以在方向更改时阻止我的应用程序重新更新 我的小部件预计每天刷新一次 你不能完全控制它。无论出于何种原因,欢迎主屏幕更频繁地触发onUpdate()调用 如果可能的话,我是否可以在方向更改时阻止我的应用

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

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

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

我的小部件预计每天刷新一次

你不能完全控制它。无论出于何种原因,欢迎主屏幕更频繁地触发
onUpdate()
调用

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

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

  • 将网络I/O结果缓存到磁盘
  • 将位图(我认为这是“非常沉重的画布绘制”的结果)缓存到磁盘
或者,完全忽略
onUpdate()
调用,如果调用太早,并且您确信主屏幕没有丢失以前的
远程视图。就我个人而言,我会使用缓存的内容重新生成
远程视图
,以防某些主屏幕实现放弃了以前的
远程视图
(例如,进程被终止并重新启动)


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

缓存数据和上次更新时间。仅在经过一定时间后更新,否则使用缓存数据。