【问题标题】:Launching progress dialogs from an application widget从应用程序小部件启动进度对话框
【发布时间】:2011-12-14 19:53:10
【问题描述】:

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

由于小部件图标在 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”来初始化进度对话框。另外,我还没有进入活动,我正在从小部件启动活动。

如何以及在哪里设置小部件中的进度对话框以使其工作?进度对话框是否属于应用程序小部件?

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

公共类 HomeActivity 扩展 Activity {

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

。 . . }

感谢任何和所有的帮助。

【问题讨论】:

    标签: android progress-bar android-appwidget


    【解决方案1】:

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

    我的建议是立即打开您的活动并根据您的 AsyncTask 显示进度条,我认为这是执行此操作的标准方式。这就是 AsyncTask 的用途,您可以从 UI 中独立执行繁重的工作,在您的情况下,您会显示一个带有消息的进度条。

    【讨论】:

    • 我尝试了您的第二种方法,但对话框(“正在加载”)仅保持打开 1/2 秒,而从小部件本身启动的活动需要几秒钟以上。我将对话框添加到从活动中调用的第一个方法中。有没有办法提前推出一个? (除了你的第一个建议)?
    猜你喜欢
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    相关资源
    最近更新 更多