Thank you very much, Dianne Hackborn! That helped. Still seems like a
bug though, doesn't it? Maybe a fixed one at that since it seems to
work in 2.2.

On 11 Jan, 18:33, Dianne Hackborn <[email protected]> wrote:
> This is because all activities in an .apk are given the same task affinity
> by default, so they will try to stay together on the same stack.  You can
> use android:taskAffinity on an activity to change this.  Use "" if you don't
> want a task affinity for an activity (probably what you want for the
> dialog).
>
> There is some description of this 
> here:http://developer.android.com/guide/topics/fundamentals.html#afftask
>
>
>
> On Tue, Jan 11, 2011 at 4:52 AM, Schoel <[email protected]> wrote:
> > Hello,
>
> > I have found some weird behaviour which might be a bug. I found it
> > while developing a quite large application but I've been able to
> > reproduce the behaviour in a minimal approach so that I can provide
> > source code.
>
> > I have a service that is constantly running and at certain times it
> > pops up an activity with Theme.Dialog as theme for the user.
> > Everything works fine if the main activity of the program has been
> > destroyed (via back button) or if the main activity is currently
> > running.
>
> > However, if the main activity of the app has been created and then
> > minimized (e.g. via Home button), the main activity shows up. It is
> > not possible to click the buttons of the main activity because it
> > seems to be hidden behind an invisible dialog activity. It is possible
> > to click the buttons of the dialog if you know where they are and if
> > you click the back button, you can see the dialog flashing by as it
> > disappears and it is then possible to click the main activity buttons.
>
> > I've tested this on HTC Desire 2.2, HTC Wildfire 2.1, HTC Legend 2.1,
> > Sony x10 mini pro 2.1 and on emulators 2.1 and 2.2. The behaviour
> > described happens on all 2.1 devices and emulator but not on emulator
> > 2.2 nor on the Desire with 2.2.
>
> > Source code is provided below. There are 2 buttons in the main
> > activity, the first, called "Finish" asks the service to popup the
> > dialog in 3 seconds and then finishes the main activity. This button
> > is for illustrative purposes only, it works fine. The second button,
> > called "Post later" just asks the service to popup the dialog in 3
> > seconds. If the second button is clicked and before the 3 seconds have
> > passed, the home button is clicked, the bug appears.
>
> > Source code:
> > Main.java:
> > --------------------------------------------------------------
> > package com.myapp.DialogBugTest;
>
> > import android.app.Activity;
> > import android.content.Intent;
> > import android.os.Bundle;
> > import android.os.Handler;
> > import android.view.View;
>
> > public class Main extends Activity
> > {
> >    private Handler handler = new Handler();
>
> >    private final Runnable runnable = new Runnable()
> >    {
> >        public void run()
> >        {
> >            DialogBugTestService.getInstance().showDialog();
> >        }
> >    };
>
> >    /** Called when the activity is first created. */
> >   �...@override
> >    public void onCreate(Bundle savedInstanceState)
> >    {
> >        super.onCreate(savedInstanceState);
> >        setContentView(R.layout.main);
>
> >        startService(new Intent(this, DialogBugTestService.class));
> >    }
>
> >    public void onFinishButton(View aView)
> >    {
> >        handler.postDelayed(runnable, 3000);
> >        finish();
> >    }
>
> >    public void onLaterButton(View aView)
> >    {
> >        handler.postDelayed(runnable, 3000);
> >    }
> > }
> > --------------------------------------------------------------
> > main.xml:
> > --------------------------------------------------------------
> > <?xml version="1.0" encoding="utf-8"?>
> > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/
> > android"
> >    android:orientation="vertical"
> >    android:layout_width="fill_parent"
> >    android:layout_height="fill_parent"
>
> >        <Button
> >                android:id="@+id/finish_button"
> >            android:layout_width="fill_parent"
> >            android:layout_height="wrap_content"
> >            android:text="Finish"
> >            android:onClick="onFinishButton"
> >            />
> >        <Button
> >                android:id="@+id/later_button"
> >            android:layout_width="fill_parent"
> >            android:layout_height="wrap_content"
> >            android:text="Post later"
> >            android:onClick="onLaterButton"
> >            />
> > </LinearLayout>
> > --------------------------------------------------------------
> > DialogBugTestService.java:
> > --------------------------------------------------------------
> > package com.myapp.DialogBugTest;
>
> > import android.app.Service;
> > import android.content.Intent;
> > import android.os.IBinder;
> > import android.util.Log;
>
> > public class DialogBugTestService extends Service
> > {
> >    private static DialogBugTestService instance = null;
> >   �...@override
> >    public void onCreate()
> >    {
> >        super.onCreate();
> >        instance = this;
> >    }
>
> >   �...@override
> >    public int onStartCommand(Intent intent, int flags, int startId)
> >    {
> >        return START_STICKY;
> >    }
>
> >    public static DialogBugTestService getInstance()
> >    {
> >        if (instance == null)
> >        {
> >            Log.e("service", "instance is null!");
> >        }
> >        return instance;
> >    }
>
> >    public void showDialog()
> >    {
> >        Intent intent = new Intent(this, DialogBugDialog.class);
> >        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
> >        startActivity(intent);
> >    }
>
> >   �...@override
> >    public IBinder onBind(Intent arg0)
> >    {
> >        return null;
> >    }
> > }
> > --------------------------------------------------------------
> > DialogBugDialog.java:
> > --------------------------------------------------------------
> > package com.optimobile.DialogBugTest;
>
> > import android.app.Activity;
> > import android.os.Bundle;
> > import android.view.View;
>
> > public class DialogBugDialog extends Activity
> > {
>
> >   �...@override
> >    protected void onCreate(Bundle aSavedInstanceState)
> >    {
> >        super.onCreate(aSavedInstanceState);
> >        setContentView(R.layout.dialog);
> >    }
>
> >    public void onOk(View aView)
> >    {
> >        finish();
> >    }
>
> > }
> > --------------------------------------------------------------
> > dialog.xml:
> > --------------------------------------------------------------
> > <?xml version="1.0" encoding="utf-8"?>
> > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/
> > android"
> >    android:orientation="vertical"
> >    android:layout_width="fill_parent"
> >    android:layout_height="fill_parent"
>
> >        <Button
> >                android:id="@+id/ok_button"
> >            android:layout_width="fill_parent"
> >            android:layout_height="fill_parent"
> >            android:text="OK"
> >            android:onClick="onOk"
> >            />
> > </LinearLayout>
> > --------------------------------------------------------------
>
> > I've also tried this without the Theme.Dialog as theme and it then
> > works fine. I also tried it with custom styles and the bug seems to
> > appear whenever windowIsFloating is set to true.
>
> > Is this a known bug? Are there any workarounds? I really need this
> > functionality in my app and doing it without a floating window looks
> > really ugly.
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to [email protected]
> > To unsubscribe from this group, send email to
> > [email protected]<android-developers%[email protected]>
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en
>
> --
> Dianne Hackborn
> Android framework engineer
> [email protected]
>
> Note: please don't send private questions to me, as I don't have time to
> provide private support, and so won't reply to such e-mails.  All such
> questions should be posted on public forums, where I and others can see and
> answer them.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to