Eclipse launches apps with slightly different flags in the intent, this can
sometimes cause subtle lifecycle differences.

Fresh from my logcat (Galaxy Nexus, 4.2.2 stock):

- Launch from Eclipse:

04-26 20:51:38.274 I/AccountListActivity(17735): ***** onCreate: Intent {
act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
flg=0x10000000 cmp=org.kman.AquaMail/.ui.AccountListActivity }

- Backed out to destroy the activity, then relaunched from the home screen:

04-26 20:52:46.469 I/AccountListActivity(17735): ***** onCreate: Intent {
act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
flg=0x10200000 cmp=org.kman.AquaMail/.ui.AccountListActivity
bnds=[520,585][680,785] }

The difference in flags is 0x00200000, which is:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

-- K



2013/4/26 Dritan <djdea...@gmail.com>

> If Android's activity stack behaves differently from an app being
> sideloaded vs OTA, I am also suspicious that there are other
> functionalities that break under the same loading procedures.
>
> Obviously, I'm not going to even ask if there is documentation about this
> since it most likely does not exist, it's ok I've been used to it all these
> years of android development.
>
>
> On Thursday, 25 April 2013 02:57:07 UTC-4, Piren wrote:
>>
>> sometimes it's easier than to use a  crooked wheel with tons of weird
>> behaviors :)
>>
>> On Wednesday, April 24, 2013 10:22:24 PM UTC+3, Dritan wrote:
>>>
>>> Yes I was afraid it'd have to come to that, it's similar to re-inventing
>>> the wheel that Android provides for me already.. with a slight tweak.. and
>>> for that slight tweak I now have to manage the stack on my own.
>>>
>>> On Wednesday, 24 April 2013 03:29:06 UTC-4, Piren wrote:
>>>>
>>>> Well, when i encountered issues i couldn't overcome because of
>>>> android's picky way of deciding which activity to show i just made my own
>>>> implementation... had only one entry point to the app using a single
>>>> activity which then decided what should be shown next.
>>>>
>>>>
>>>> On Tuesday, April 23, 2013 7:36:19 PM UTC+3, Dritan wrote:
>>>>>
>>>>> Thank you Piren and Andrei for your replies but neither seem to do the
>>>>> same job as singleTop :(
>>>>>
>>>>> SingleTop remembers which activity you were last on and always brings
>>>>> that up when launching from the icon. I have tried setting my application
>>>>> to "android:allowTaskReparenting=**"true"" but that didn't work.
>>>>>
>>>>> I have tried using launchMode="singleTask" but that brings up only the
>>>>> main activity - not the last activity user was on. The user has to re-tap
>>>>> within the main activity to get back in the last activity they were on.
>>>>>
>>>>> SingleInstance is out of the question - it's always a new instance.
>>>>>
>>>>> My main activity is the only activity with intent filters MAIN and
>>>>> LAUNCHER.
>>>>>
>>>>> I just don't understand why the very first time my app is installed
>>>>> sinlgeTop behaves like "standard" and only after quitting and restarting
>>>>> the app will singleTop actually work as it should.
>>>>>
>>>>> Thanks for your help!
>>>>> Dritan
>>>>>
>>>>>
>>>>> On Tuesday, 23 April 2013 03:34:58 UTC-4, Andrei Ponomarenko wrote:
>>>>>>
>>>>>> Here you go:
>>>>>> <application android:icon="@drawable/icon"
>>>>>>      android:label="@string/app_**name"
>>>>>>     android:theme="@android:style/**Theme.Black.NoTitleBar"
>>>>>>     android:debuggable="true"
>>>>>>     android:allowTaskReparenting="**true"
>>>>>>     android:name="com.company.**product.AppName"
>>>>>>        >
>>>>>>
>>>>>>         <activity
>>>>>>     android:theme="@style/Theme.**Sherlock"
>>>>>>         android:name="com.company.**product.MainActivity"
>>>>>>         android:label="@string/app_**name"
>>>>>>         android:launchMode="singleTop"
>>>>>>
>>>>>>         >
>>>>>>
>>>>>> If you don't want singleTask there is a way to make sure singleTop
>>>>>> always has only one instance. Just like Piren said - make sure there are 
>>>>>> no
>>>>>> other intents to launch your app - they will create a different instance.
>>>>>> If you absolutely need to have other intents that can launch your 
>>>>>> activity
>>>>>> but still want only one instance use this:
>>>>>> intent.setFlags(Intent.FLAG_**ACTIVITY_NEW_TASK |
>>>>>> Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_**TOP);
>>>>>> It won't be the same instance but there will be only one.
>>>>>> Good luck!
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tuesday, April 23, 2013 12:10:12 AM UTC-7, Piren wrote:
>>>>>>>
>>>>>>> Sorry, you should probably try singleTask before singleInstance :)
>>>>>>>
>>>>>>> On Tuesday, April 23, 2013 10:08:49 AM UTC+3, Piren wrote:
>>>>>>>>
>>>>>>>> Sounds like the intent being used to launch the app by default and
>>>>>>>> the intent used to launch from the icon behave differently. SingleTop 
>>>>>>>> does
>>>>>>>> not guarantees that only one activity will be shown, rather one per 
>>>>>>>> task.
>>>>>>>> sounds as if you keep creating different tasks in one instance.  I had
>>>>>>>> something similar happen to me and it was specific to some Motorola 
>>>>>>>> based
>>>>>>>> devices.. i guess their launcher treated launch intents a bit 
>>>>>>>> differently.
>>>>>>>>
>>>>>>>> If you can, change it to singleInstance. If not, try checking the
>>>>>>>> different intents you use to launch and also see if enabling
>>>>>>>> taskReparenting helps you.
>>>>>>>>
>>>>>>>> On Tuesday, April 23, 2013 2:49:13 AM UTC+3, Dritan wrote:
>>>>>>>>>
>>>>>>>>> I just noticed that even when I export the app with a debug key
>>>>>>>>> via
>>>>>>>>> "ant debug" the app behaves the same way as OTA installation,
>>>>>>>>> which is
>>>>>>>>> the incorrect behavior.
>>>>>>>>>
>>>>>>>>> How come my app's main activity's "launchMode" stops behaving
>>>>>>>>> weirdly
>>>>>>>>> AFTER it has run once? I don't have any code handling the activity
>>>>>>>>> stack, I left it purely on Android's hands.
>>>>>>>>>
>>>>>>>>> Any clues?
>>>>>>>>>
>>>>>>>>> Thanks!!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Apr 22, 6:52 pm, Dritan <djdea...@gmail.com> wrote:
>>>>>>>>> > Hello,
>>>>>>>>> >
>>>>>>>>> > When I sideload my app to my phone via USB, the very first time
>>>>>>>>> it
>>>>>>>>> > runs, the main activity behaves as expected. Only 1 instance of
>>>>>>>>> main
>>>>>>>>> > can be launched, no matter what.
>>>>>>>>> >
>>>>>>>>> > When I export my app as a signed app, then install the app OTA
>>>>>>>>> the
>>>>>>>>> > main activity behaves completely different ONLY the first time
>>>>>>>>> it
>>>>>>>>> > runs.
>>>>>>>>> >
>>>>>>>>> > After installing the app, the main activity loads. I press the
>>>>>>>>> 'Home'
>>>>>>>>> > button, then relaunch the app from the icon and a new main
>>>>>>>>> activity is
>>>>>>>>> > loaded. I can keep on doing this for tens of hundreds of
>>>>>>>>> activity
>>>>>>>>> > instances.
>>>>>>>>> >
>>>>>>>>> > Once I have closed all such lose instances and restart the app,
>>>>>>>>> then
>>>>>>>>> > the main activity returns the expected behavior as being a
>>>>>>>>> "singleTop"
>>>>>>>>> > instance.
>>>>>>>>> >
>>>>>>>>> > I have removed all proguard-related lines and files from my app
>>>>>>>>> so
>>>>>>>>> > when I export as signed, doesn't try to obfuscate? (to my
>>>>>>>>> knowledge)
>>>>>>>>> >
>>>>>>>>> > I do not understand why this is happening, is this a bug with
>>>>>>>>> Android
>>>>>>>>> > or am I doing something I have never heard of before? Does
>>>>>>>>> anyone have
>>>>>>>>> > a solution?
>>>>>>>>> >
>>>>>>>>> > Thank you,
>>>>>>>>> > Dritan
>>>>>>>>>
>>>>>>>>  --
> --
> 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
> ---
> You received this message because you are subscribed to the Google Groups
> "Android Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to android-developers+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to