активность, запущенная из виджета, приводит к отображению активности в стеке - PullRequest
0 голосов
/ 15 января 2012

У меня есть небольшое приложение с двумя действиями (скажем, A и B) и appWidget. Когда я нажимаю на виджет, я запускаю действие, которое анимирует виджет, в то же время делая некоторые вещи. Я делаю это так;

Intent intent = new Intent(context, DialogActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
RemoteViews.setOnClickPendingIntent(R.id.imageButton1, pendingIntent);

тогда действие в onCreate делает это:

    Paint p = new Paint();
    p.setStyle(Paint.Style.FILL);
    p.setColor(Color.TRANSPARENT);

    logger.debug("inizializzo movie"); //$NON-NLS-1$
    Movie movie;
    InputStream is = null;
    long moviestart = 0;
    is = this.getResources().openRawResource(R.drawable.gifanimata);
    movie = Movie.decodeStream(is);

    taskIsrunning = true;

    //this is an AsyncTask that at the end of the work sets taskIsrunning = false
    new InitTask().execute(this);
    while (taskIsrunning) {

    Bitmap bitmap = Bitmap.createBitmap(100, 100, Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.drawRect(0, 0, 100, 100, p);

    long now = android.os.SystemClock.uptimeMillis();

    if (moviestart == 0) { // first time
    moviestart = now;

    }
    int relTime = (int) ((now - moviestart) % movie.duration());
    movie.setTime(relTime);

    movie.draw(canvas, 0, 0);
    updateViews.setImageViewBitmap(R.id.imageButton1, bitmap);
    widgetManager.updateAppWidget(theWidget, updateViews);
    try {
    Thread.sleep(500);
    } catch (Exception e) {
    throw e;
    }
    }

в конце концов, из этого действия (ведьма полностью прозрачна) я показываю диалог. Это работает так, как я хочу, но вот проблема:

Когда я запускаю действие, если ранее я открыл первое действие приложения (действие A) и закрыл его кнопкой «домой» (действие остается в стеке) вместо закрытия кнопкой «Назад», момент показывая диалог из действия, запущенного виджетом, диалоговое окно показывается, но также и действие A.

Я попытался установить на манифесте Android: noHistory = "true", и проблема решена, но если из действия A i запустить действие B, кнопка "Назад" не будет отображать операцию возврата A.

...