Android AppWidget的方向发生了变化

时间:2014-12-13 10:39:56

标签: android android-asynctask android-widget screen-orientation

我理解我的问题听起来很旧,我在SO上搜索了很多,但无法弄清楚如何解决它。

我使用“刷新”按钮创建了一个App Widget,允许用户从Internet加载信息。每当用户单击“刷新”时,窗口小部件将执行Asynctask以下载信息。

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

    for (int appWidgetId: appWidgetIds) {
           //update app widget
    }
}

@Override
public void onReceive(Context context, Intent intent) {

    if (REFRESH_LIST.equals(intent.getAction())) {
          //Execute AsyncTask to download information from Internet and update widget listview
    }
}

小部件工作正常,除非用户单击“刷新”并在AsyncTask仍在后台运行时旋转屏幕,然后整个小部件设置和该小部件实例的数据都将丢失。

所以任何人都遇到过同样的问题请指过我的手指。谢谢!!

2 个答案:

答案 0 :(得分:0)

您不需要在那里使用AsynTask。 单击小部件上的刷新按钮将向您的服务发送意图。此服务将关心从Internet更新信息以及何时完成任务以关注更新窗口小部件(再次按意图)。通过这种方式,改变方向不会破坏您的服务任务。

<强>假设:
我想,您将无法通过当前的实施来处理方向更改。因为系统系统在它期间简单地重新创建新的Widget。在这种情况下,AsyncTask任务仍在运行,并将在旧窗口小部件(内存中的左侧)完成,但不适用于新窗口。

答案 1 :(得分:0)

使用此小部件一段时间后,我发现只要AsyncTask中不涉及RemoteView(我想在下载信息时显示一个ProgressBar),则小部件和AsyncTask在方向改变时应该运行良好。希望这可以帮助遇到相同问题的任何人。