Like you said, the design may be revisited and may be corrected.
Thanks.
But how i am getting different results while running it standalone
(singleTop) and by running it through root activity which is
(singleInstance)?
can you throw some light on that? well I really appreciate your help.

On Sep 7, 11:17 am, Dianne Hackborn <hack...@android.com> wrote:
> Well it seems pretty broken to me what you are doing, anyway.  For example,
> if the locale changes your activity will be destroyed and recreated for the
> new locale, blowing away your list.  Either make your list a member variable
> of the activity and initialize it in onCreate(), or have it static and
> really deal with it as a true global (not blowing it away when an activity
> happens to be created); mixing the two models up like that is just going to
> cause problems.
>
>
>
> On Sun, Sep 6, 2009 at 10:51 PM, indra <indrad...@gmail.com> wrote:
>
> > ok Dianne, then,
>
> > Class MySingleton
> > {
> > static List<> myList;
> > }
>
> > //This activity is singleTop
> > Class MyActivity
> > {
> > onCreate(Bundle)
> > {
> > initStaticList(); //say the init size is 2
> > }
>
> > //Now suppose in between some other activity add 2 more objects in
> > myList
> > map()
> > {
> > int size = MySingleton.myList.size();
> > }
>
> > }
>
> > When I run this scenario using singleTask/singleInstance root
> > activity, I always get size 2.
> > But when I run this activity standalone, I get the desired result as
> > 4.
> > I am not saying it is because of singleTask or singleTop, but this is
> > what is happening.
>
> > Is there something I am doing wrong here? Please suggest something!
>
> > On Sep 6, 11:24 pm, Dianne Hackborn <hack...@android.com> wrote:
> > > Sorry I can't understand what you are doing enough to help.  If you have
> > a
> > > static variable holding a singleton, it will hold whatever the last value
> > > you put into it is (until your process gets killed, and then of course
> > the
> > > next time it is restarted it will be re-initialized to its default
> > value).
> > >  There is nothing about activities or anything else in Android that has
> > an
> > > impact on this fundamental behavior.
>
> > > On Sun, Sep 6, 2009 at 3:48 AM, indra <indrad...@gmail.com> wrote:
>
> > > > Hi,
> > > > Here I come across a strange problem. I am using a static list (say
> > > > myList) in a Singleton class, which I use in a activity (say
> > > > myActivity) which is run by a singleTask root activity (rootActivty).
> > > > But when i try to access myList in the myActivity, I do not get a
> > > > refreshed version of that myList, instead I get the value one which I
> > > > first time accessed in myActivity.
> > > > Strangle when I run this myActivity standalone I get correct values of
> > > > myList each time.
> > > > Please help me out.
> > > > Thanks and Regards
> > > > Indra
>
> > > > On Aug 25, 9:46 pm, Dianne Hackborn <hack...@android.com> wrote:
> > > > > Please read the documentation.  As I said in my original post, this
> > is
> > > > for
> > > > > when your activity gets killed while it is in the background.  When
> > you
> > > > > press back, the default implementation is to finish() the activity so
> > > > there
> > > > > is no longer any instance data.
>
> > > > > On Tue, Aug 25, 2009 at 6:57 AM, sdphil <phil.pellouch...@gmail.com>
> > > > wrote:
>
> > > > > > hm...  okay, so I check for null in my onCreate() method.
>
> > > > > > public void onCreate(Bundle savedInstanceData) {
> > > > > >    if (savedInstanceData == null) {
> > > > > >        // do everything I did before.
> > > > > >        // show splash screen
> > > > > >        super.onCreate(savedInstanceState);
> > > > > >    }
> > > > > > }
>
> > > > > > However, now if I'm in my app, I click on "home", and then click on
> > > > > > the icon again, it behaves as expected, it simply brings the app
> > back
> > > > > > in the expected state.  If I hit "back" and then click on the icon
> > > > > > again, it behaves like I launched a brand new app - shows the
> > splash
> > > > > > screen, etc...
>
> > > > > > On Aug 24, 11:24 pm, Dianne Hackborn <hack...@android.com> wrote:
> > > > > > > The simple fact that it is non-null tells you.  And you can have
> > > > placed
> > > > > > > anything else you want in there in onSaveInstanceState() for
> > whatever
> > > > > > other
> > > > > > > data you want to retain.  See here:
>
> >http://developer.android.com/guide/topics/fundamentals.html#actlife
>
> > > > > > > and here:
>
> > > > > > >http://developer.android.com/reference/android/app/Activity.html
>
> > > > > > > On Mon, Aug 24, 2009 at 10:51 PM, sdphil <
> > phil.pellouch...@gmail.com
>
> > > > > > wrote:
>
> > > > > > > > "You can use the state passed in to onCreate() to determine
> > whether
> > > > > > > > you are starting for the first time or not."
>
> > > > > > > > How do I do that?
>
> > > > > > > > I'm looking at onCreate --
>
> > > > > > > >    public void onCreate(Bundle savedInstanceState) {
>
> > > > > > > > and I look at savedInstanceState, nothing jumps out at me...
>
> > > > > > > > On Aug 24, 10:39 pm, Dianne Hackborn <hack...@android.com>
> > wrote:
> > > > > > > > > If you just want pressing back to not close the activity,
> > just
> > > > catch
> > > > > > the
> > > > > > > > > BACK key and call Activity.moveTaskToBack() instead of
> > letting it
> > > > do
> > > > > > the
> > > > > > > > > default behavior (of calling finish()).
>
> > > > > > > > > There is no need to use launchMode nor alwaysRetainTaskState.
>
> > > > > > > > > However, you DO need to deal with the normal lifecycle
> > behavior
> > > > -- in
> > > > > > > > > particular, when you are in the background, regardless of how
> > > > this
> > > > > > > > happened,
> > > > > > > > > the system is free to kill your process, so when the user
> > next
> > > > > > returns to
> > > > > > > > > your app a new instance of your activity will be created.
> >  You
> > > > can
> > > > > > use
> > > > > > > > the
> > > > > > > > > state passed in to onCreate() to determine whether you are
> > > > starting
> > > > > > for
> > > > > > > > the
> > > > > > > > > first time or not.
>
> > > > > > > > > Also, a "quit" menu on an android application is not normal,
> > > > > > expected,
> > > > > > > > nor
> > > > > > > > > desired.  Please don't do it; there is no need.  I think you
> > will
> > > > > > have a
> > > > > > > > > much better time if you try to design your app to follow the
> > kind
> > > > of
> > > > > > flow
> > > > > > > > > shown by the existing applications, rather than trying to
> > make it
> > > > > > work
> > > > > > > > like
> > > > > > > > > a desktop application.
>
> > > > > > > > > For example: you could save your current state to persistent
> > > > storage
> > > > > > when
> > > > > > > > > the user leaves the app, and restore it when they return, so
> > they
> > > > > > know
> > > > > > > > they
> > > > > > > > > will always come back to the same thing.  If it makes for
> > them to
> > > > > > > > actually
> > > > > > > > > throw away that state, you could have an option for them to
> > reset
> > > > the
> > > > > > app
> > > > > > > > so
> > > > > > > > > they can decide to do that at the time they want, rather than
> > > > having
> > > > > > to
> > > > > > > > > decide earlier on to have this happen as a side-effect of
> > some
> > > > > > unusual
> > > > > > > > > "quit" command.
>
> > > > > > > > > On Mon, Aug 24, 2009 at 10:16 PM, sdphil <
> > > > phil.pellouch...@gmail.com
>
> > > > > > > > wrote:
>
> > > > > > > > > > I want my application to work like this:
>
> > > > > > > > > > 1. When the user launches the application, it starts up.
> > > > > > > > > > 2. When the user hits back, or home, the application is
> > still
> > > > > > running
> > > > > > > > > > (although not visible).
> > > > > > > > > > 3. If the user hits "menu->quit" the application exits
> > cleanly.
> > > > > > > > > > 4. If the user starts the application, hits "home" and
> > selects
> > > > the
> > > > > > > > > > application icon *again*, I want it to bring up the
> > existing
> > > > > > insance
> > > > > > > > > > of the application with whatever activity state it had
> > before
> > > > it
> > > > > > left.
> > > > > > > > > > 5. I do not ever want more than one instance of my
> > application
> > > > to
> > > > > > be
> > > > > > > > > > running (i.e. singleton).
> > > > > > > > > > 6. I always want to retain activity stack/state.  when you
> > come
> > > > > > back
> > > > > > > > > > into the application, it's like you never left.
>
> > > > > > > > > > <?xml version="1.0" encoding="utf-8"?>
> > > > > > > > > > <manifest xmlns:android="
> > > > > >http://schemas.android.com/apk/res/android";
> > > > > > > > > >          package="com.company.gui"
> > > > > > > > > >          android:versionCode="1"
> > > > > > > > > >          android:versionName="1.0">
> > > > > > > > > >    <application android:icon="@drawable/icon"
> > > > > > > > > >                 android:label="@string/app_name"
> > > > > > > > > >                 android:debuggable="true">
> > > > > > > > > >        <activity android:name=".Main"
> > > > > > > > > >                  android:launchMode="singleTask"
> > > > > > > > > >                  android:alwaysRetainTaskState="true"
> > > > > > > > > >                  android:label="@string/app_name"
> > > > > > > > > >                  android:screenOrientation="portrait"
>
> > > >  android:theme="@android:style/Theme.NoTitleBar">
> > > > > > > > > >            <intent-filter>
> > > > > > > > > >                <action
> > > > android:name="android.intent.action.MAIN" />
> > > > > > > > > >                <category
> > > > > > > > > > android:name="android.intent.category.LAUNCHER" />
> > > > > > > > > >            </intent-filter>
> > > > > > > > > >        </activity>
>
> > > > > > > > > >        <activity android:name=".SplashScreen"
> > > > > > > > > >                  android:label="@string/app_name">
> > > > > > > > > >        </activity>
>
> > > > > > > > > >    </application>
> > > > > > > > > >    <uses-sdk android:minSdkVersion="3" />
> > > > > > > > > > <uses-permission
> > > > android:name="android.permission.INTERNET"></uses-
> > > > > > > > > > permission>
> > > > > > > > > > </manifest>
>
> > > > > > > > > > my main activity onCreate() looks like this:
>
> > > > > > > > > >        startActivityForResult( new Intent(this,
> > > > > > SplashScreen.class),
>
> ...
>
> read more »- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to