从AsyncTask获取小部件的数据

时间:2018-02-13 11:23:17

标签: android json android-asynctask

我正在使用AsyncTask从互联网下载一些JSON天气数据(城市名称和温度),我还有一个需要下载信息的小部件,每30分钟更新一次小部件,我能够用{{1转移城市名称和静态变量。所以每次更新都会获得数据。城市信息不会像温度那样经常变化。那么即使应用程序未运行且未在最后30分钟内打开,如何显示SharedPreferences的温度信息? 我应该在AsyncTask中设置另一个AsyncTask吗?还是有一种更简单的方法?

2 个答案:

答案 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);