我正在使用AsyncTask从互联网下载一些JSON天气数据(城市名称和温度),我还有一个需要下载信息的小部件,每30分钟更新一次小部件,我能够用{{1转移城市名称和静态变量。所以每次更新都会获得数据。城市信息不会像温度那样经常变化。那么即使应用程序未运行且未在最后30分钟内打开,如何显示SharedPreferences
的温度信息?
我应该在AsyncTask
中设置另一个AsyncTask
吗?还是有一种更简单的方法?
答案 0 :(得分:0)
您可以使用保存信息所需的任何持久性工具,让窗口小部件独立使用该信息。
例如,将所有信息保存到文件中,只需让小部件知道文件名或数据库......
在这种情况下,静态变量是一个坏主意。
答案 1 :(得分:0)
在这种情况下使用IntentService。每隔5/15/30分钟通过报警触发,并在自己获取数据更新小部件后触发。正如你所提到的,android在widget提供者xml更新时间有限制(最短时间是每30分钟),但是对你自己更新没有限制。所以在你的IntentService中获取你的数据,之后:
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
int widgetIds[] = appWidgetManager.getAppWidgetIds(new ComponentName(context,
WidgetClass.class));
RemoteViews views = new RemoteViews(context, R.id.widget_layout);//configure here your remoteViews
appWidgetManager.updateAppWidget(widgetIds, views);