Запуск диалоговых окон прогресса из виджета приложения - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть виджет приложения, который содержит кнопку.Как только я нажимаю на кнопку, загрузка занимает некоторое время.В загруженном упражнении у меня есть две асинхронные задачи, выполнение которых занимает несколько секунд.Итак, я хотел бы запустить страницу диалога прогресса во время загрузки действия.

Так как значок виджета настроен как намерение в 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 расширяет действие {

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

.,,}

Любая и вся помощь приветствуется.

1 Ответ

1 голос
/ 15 декабря 2011

Ну, вы не можете этого сделать, единственный способ - это запустить прозрачную активность в середине, которая показывает только пользовательский диалог с индикатором выполнения, а затем запускает реальную активность.Но это не элегантное решение, на самом деле это отстой.

Я предлагаю сразу открыть свою активность и показать там индикатор выполнения на основе вашей AsyncTask, я думаю, что это стандартный способ сделать это.Для этого и нужен AsyncTask: вы можете выполнять тяжелую работу независимо от интерфейса пользователя, в вашем случае вы бы отображали индикатор выполнения с сообщением.

...