从应用程序窗口小部件启动进度对话框

时间:2011-12-14 19:53:10

标签: android progress-bar android-appwidget

我有一个包含按钮的应用程序小部件。单击按钮后,它会将活动花费一段时间来加载。在加载的活动中,我有两个异步任务,需要几秒钟才能执行。所以,我想要做的是在活动加载时启动进度对话框页面。

由于小部件图标在onUpdate中设置为意图:

public class MyWidget extends AppWidgetProvider {

    @Override
    public void onEnabled(Context context) {
        super.onEnabled(context);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
         remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);    
         Intent messageIntent = new Intent(context, MyActivity.class);
         messageIntent.setAction(ACTION_WIDGET_GROUP);
    }
}

没有特定的“onClick”来初始化进度对话框。另外,我还没有进入活动,我正在从小部件启动活动。

如何以及在何处设置窗口小部件中的进度对话框以使其生效?进度对话框是否属于应用程序小部件?

进度对话框不会在活动本身内启动。它确实如此,但它只在活动加载后才开始:

public class HomeActivity扩展了Activity {

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dashboard);
    setupLayout();   
    callAsynchronousUsers(); // asynchronous call
        getData(); // asynchronous call
    }

。 。 。 }

感谢任何和所有帮助。

1 个答案:

答案 0 :(得分:1)

嗯,你不能这样做,唯一的方法是在中间启动一个透明活动,只显示带有进度条的自定义对话框,然后启动真实活动。但这不是一个优雅的解决方案,实际上很糟糕。

我建议立即打开您的活动并根据您的AsyncTask显示进度条,我认为这是执行此操作的标准方法。这就是AsyncTask的用途,您可以独立于UI执行艰苦的工作,在您的情况下,您将显示带有消息的进度条。