If I remove this from your ActivityB in the Manifest then they behave
the same.

  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>

I think it because we are NOT invoking this Intent in the button.  I
predict that if we invoke this Intent in the buttton click that your
app will then behave as expected and go back to ActivityB

On Feb 19, 12:40 pm, jotobjects <[email protected]> wrote:
> We have the same results but different analysis.
>
> Same results - my app goes back to ActivityB and your app goes back to
> ActivityA.
>
> Different analysis - I do NOT think the click listener definition
> makes any difference (just a difference in style but functionally the
> same).  What I DID notice is that when I use my  AndroidManifest that
> your app and my app behave the same.  Haven't figured out why that is
> so yet.
>
> On Feb 19, 12:09 pm, Mark Wyszomierski <[email protected]> wrote:
>
> > Ok so yours work, and I see the change that causes my version to lose
> > its history:
>
> > // Yours - works:
> > private OnClickListener gotoBClickListener = new
> > GotoBClickListener();
> > public void onCreate(Bundle savedInstanceState) {
> >   button.setOnClickListener(gotoBClickListener);
>
> > }
>
> > // Mine - does not work:
> > public void onCreate(Bundle savedInstanceState) {
> >   button.setOnClickListener(new OnClickListener() {
> >     public void onClick(View arg0) {
> >       Intent intent = new Intent();
> >       intent.setClass(ActivityA.this, ActivityB.class);
> >       startActivity(intent);
> >     }
> >   });
>
> > }
>
> > but I don't understand why this should make my history stack get wiped
> > out, depending on when the click handler was defined which launches
> > the intent?
>
> > Thanks
>
> > On Feb 19, 11:35 am, Mark Wyszomierski <[email protected]> wrote:
>
> > > Thanks for posting, I'll make a new project with your code to test.
> > > Although my G1 is running 1.5, my emulator is using 2.0, so it should
> > > be testing both situations. Will try yours now,
>
> > > Thanks
>
> > > On Feb 19, 11:21 am, jotobjects <[email protected]> wrote:
>
> > > > Yes in the last step I get back to ActivityB and you get back to
> > > > ActivityA so that's different behavior.  The only environment
> > > > difference apparently is that your test is with 1.5 and my test is
> > > > with 2.0.1, but it doesn't seem like this core behavior would have
> > > > changed.  Here is my app.  I'll test your app also.
>
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <manifest xmlns:android="http://schemas.android.com/apk/res/android";
> > > >       package="foo.singletask"
> > > >       android:versionCode="1"
> > > >       android:versionName="1.0">
> > > >     <uses-sdk android:minSdkVersion="3" />
> > > >     <application android:label="SimpleSingleTask">
> > > >         <activity android:name=".ActivityA"
> > > >                 launchMode="singleTask">
> > > >             <intent-filter>
> > > >                 <action android:name="android.intent.action.MAIN" />
> > > >                 <category
> > > > android:name="android.intent.category.LAUNCHER" />
> > > >             </intent-filter>
> > > >         </activity>
> > > >         <activity android:name=".ActivityB"/>
> > > >     </application>
> > > > </manifest>
>
> > > > - - - - ActivityA.java - - - -
> > > > package foo.singletask;
>
> > > > import android.app.Activity;
> > > > import android.content.ComponentName;
> > > > import android.content.Intent;
> > > > import android.os.Bundle;
> > > > import android.view.View;
> > > > import android.view.View.OnClickListener;
> > > > import android.widget.Button;
>
> > > > public class ActivityA extends Activity
> > > > {
> > > >     private OnClickListener gotoBClickListener = new
> > > > GotoBClickListener();
> > > >     private Intent gotoBIntent;
>
> > > >     @Override
> > > >     public void onCreate(Bundle savedInstanceState) {
> > > >         super.onCreate(savedInstanceState);
> > > >         setContentView(R.layout.viewa);
> > > >         Button button = (Button)findViewById(R.id.gotoB);
> > > >         button.setOnClickListener(gotoBClickListener);
> > > >         gotoBIntent = new Intent().setComponent(
> > > >                 new ComponentName(this, ActivityB.class));
> > > >     }
>
> > > >     private class GotoBClickListener implements OnClickListener {
> > > >         @Override
> > > >         public void onClick(View v) {
> > > >             startActivity(gotoBIntent);
> > > >         }
> > > >     }
>
> > > > }
>
> > > > - - - - ActivityB.java - - - -
> > > > package foo.singletask;
>
> > > > import android.app.Activity;
> > > > import android.os.Bundle;
>
> > > > public class ActivityB extends Activity
> > > > {
> > > >     @Override
> > > >     public void onCreate(Bundle savedInstanceState) {
> > > >         super.onCreate(savedInstanceState);
> > > >         setContentView(R.layout.viewb);
> > > >     }
>
> > > > }
>
> > > > - - - - res/layout/viewa.xml - - -
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <Button xmlns:android="http://schemas.android.com/apk/res/android";
> > > >     android:id="@+id/gotoB"
> > > >     android:layout_width="wrap_content"
> > > >     android:layout_height="wrap_content"
> > > >     android:textColor="#FF0000"
> > > >     android:text="This is A - Go to B"/>
>
> > > > - - - - res/layout/viewb.xml - - -
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <TextView xmlns:android="http://schemas.android.com/apk/res/android";
> > > >     android:layout_width="fill_parent"
> > > >     android:layout_height="fill_parent"
> > > >     android:textColor="#FF0000"
> > > >     android:text="hello from Activity B"/>
>
> > > > On Feb 19, 6:36 am, Mark Wyszomierski <[email protected]> wrote:
>
> > > > > Hi jotobjects,
>
> > > > > Yes I am running it as you described, here it is exactly:
>
> > > > > -Run emulator (same on g1 running 1.5)
> > > > > -Make sure all instances of app are killed (not running from eclipse)
> > > > > -Start app from app tray, ActivityA is created
> > > > > -ActivityA launched ActivityB via button click
> > > > > -Home button
> > > > > -Open app tray, click app icon
> > > > > -ActivityA is shown instead of ActivityB
>
> > > > > are you sure you're getting different behavior? If so, it would be
> > > > > awesome if you could post your sample, this is definitely not desired
> > > > > behavior!
>
> > > > > Thanks
>
> > > > > On Feb 18, 1:57 pm, jotobjects <[email protected]> wrote:
>
> > > > > > On quick inspection your app looks almost like the one I tested. My
> > > > > > test is with the emulator with Android 2.0.1.  I am NOT running this
> > > > > > from eclipse.   Any difference from your scenario?
>
> > > > > > What do you mean by "resume" in your scenario?  Do you mean pulling
> > > > > > down the tray and clicking on the App icon again?
>
> > > > > > On Feb 18, 12:53 pm, Mark Wyszomierski <[email protected]> wrote:
>
> > > > > > > Hi jotobjects, that would be really helpful if you could post your
> > > > > > > example. My simple example is below. Behavior I am seeing is:
>
> > > > > > >  -App Tray
> > > > > > >  -ActivityA
> > > > > > >  -btn click, start ActivityB
> > > > > > >  -home button
> > > > > > >  -resume
> > > > > > >  -ActivityA is shown
>
> > > > > > > import android.app.Activity;
> > > > > > > import android.content.Intent;
> > > > > > > import android.os.Bundle;
> > > > > > > import android.view.View;
> > > > > > > import android.view.View.OnClickListener;
> > > > > > > import android.widget.Button;
>
> > > > > > > public class ActivityA extends Activity {
> > > > > > >     @Override
> > > > > > >     public void onCreate(Bundle savedInstanceState) {
> > > > > > >         super.onCreate(savedInstanceState);
> > > > > > >         setContentView(R.layout.activitya);
>
> > > > > > >         Button btn = (Button)findViewById(R.id.btn);
> > > > > > >         btn.setOnClickListener(new OnClickListener() {
> > > > > > >             public void onClick(View arg0) {
> > > > > > >                 Intent intent = new Intent();
> > > > > > >                 intent.setClass(ActivityA.this, ActivityB.class);
> > > > > > >                 startActivity(intent);
> > > > > > >             }
> > > > > > >         });
> > > > > > >     }
>
> > > > > > > }
>
> > > > > > > import android.app.Activity;
> > > > > > > import android.os.Bundle;
>
> > > > > > > public class ActivityB extends Activity {
> > > > > > >     @Override
> > > > > > >     public void onCreate(Bundle savedInstanceState) {
> > > > > > >         super.onCreate(savedInstanceState);
> > > > > > >         setContentView(R.layout.activityb);
> > > > > > >     }
>
> > > > > > > }
>
> > > > > > > <activity android:name=".ActivityA"
> > > > > > >   android:label="@string/app_name"
> > > > > > >   android:launchMode="singleTask">
> > > > > > >   <intent-filter>
> > > > > > >     <action android:name="android.intent.action.MAIN" />
> > > > > > >     <category android:name="android.intent.category.LAUNCHER" />
> > > > > > >   </intent-filter>
> > > > > > > </activity>
>
> > > > > > > <activity android:name=".ActivityB"
> > > > > > >   android:label="@string/app_name">
> > > > > > >   <intent-filter>
> > > > > > >     <action android:name="android.intent.action.VIEW" />
> > > > > > >     <category android:name="android.intent.category.DEFAULT" />
> > > > > > >   </intent-filter>
> > > > > > > </activity>
>
> > > > > > > Thanks
>
> > > > > > > On Feb 18, 10:18 am, jotobjects <[email protected]> wrote:
>
> > > > > > > > Just curious since you and others have asked similar questions 
> > > > > > > > in the
> > > > > > > > past.  I just wrote a simple App with ActivityA and ActivityB 
> > > > > > > > where A
> > > > > > > > issingleTasklaunchMode.  If I go A->b->Home->relaunch I get 
> > > > > > > > gack to
> > > > > > > > B.  So I cannot replicate the scenario you describe.  The code 
> > > > > > > > and all
> > > > > > > > files for the app are just a couple of dozen lines so I can 
> > > > > > > > post if
> > > > > > > > here if that would be helpful to figure out what you are doing
> > > > > > > > differently than my test.
>
> > > > > > > > On Feb 18, 7:09 am, Mark Wyszomierski <[email protected]> wrote:
>
> > > > > > > > > Hi,
>
> > > > > > > > > I have an activity, ActivityA, and its launchMode is set to
> > > > > > > > > "singleTask".
>
> > > > > > > > > I start the application from the app tray. ActivityA launches
> > > > > > > > > ActivityB from a button click. ActivityB is a normal activity 
> > > > > > > > > with no
> > > > > > > > > launchMode set ("standard").
>
> > > > > > > > > With
>
> ...
>
> read more »

-- 
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