lol, I always argue with my mates about use activity or multiple layout
views. We follow this, if menu changes with screen changes, use the
activity, else employ multiple layout
views

2008/12/17 Dianne Hackborn <[email protected]>

> We are just arguing semantics here.  Yes, there are times when it makes
> sense to start a new activity and times when it makes sense to change the UI
> in an existing one.  I'm not going to give you The Rule for when these times
> are.  That is part of designing your UI, keeping in mind the basic activity
> model where they stack on top of each other and the user presses back to
> return to the previous.  If that is not how you want flow to happen between
> parts of your UI (and you don't need to allow external applications to
> directly launch these parts of it), then it may well make perfect sense to
> do a set of things within one activity.
>
> As Romain said, we called the class Activity and not Screen for good
> reason, which I was very involved in arguing about at the time the API names
> were being settled. :)
>
>
> On Tue, Dec 16, 2008 at 12:57 PM, loty <[email protected]> wrote:
>
>>
>> Cool - I guess we were arguing on the same side of things. :)
>> I definitely saw this in API docs somewhere and Diane just repeated it
>> too that general rule of thumb should be new Activity for new screen
>> and I just think that as a general rule of thumb you probably don't
>> want to have new Activity for each new screen. It sounds like one of
>> these rules that is meant to be broken...
>>
>> On Dec 16, 3:17 pm, Romain Guy <[email protected]> wrote:
>> > We never said every screen has to be an Activity (that's why it's
>> > called Activity and not Screen :)). Calendar is a good example of
>> > this, when you switch between the Day view to the Week view, you
>> > remain in the same activity for instance.
>> >
>> > Again, it is perfectly sound to flip views inside one Activity, if it
>> > makes sense in the user's workflow. Similarly, it is perfectly sound
>> > to use several Activities, if it makes sense in the user's workflow.
>> >
>> > The Calendar app is again a good example of when not to use
>> > Activities. The Activity is viewing your agenda, but you can view it
>> > in different ways (day, week, month, etc.) and those become simply
>> > states of the activity.
>> >
>> >
>> >
>> > On Tue, Dec 16, 2008 at 9:04 PM, loty <[email protected]> wrote:
>> >
>> > > Each Activity carries a lot of baggage like state management, etc
>> > > which is not always applicable. I started my first Android app like a
>> > > good boy from the Notepad example and very soon had a spaghetti of
>> > > Activities. It got to the point that I had to click Back button 6 or 7
>> > > times to get back to my main screen - clearly an awful design (mostly
>> > > mine maybe with some guilt spilling to Android team as well).
>> > > I redone my app with just 2 Activities and view flipping and couldn't
>> > > be happier.
>> > > Activity is NOT a new screen - activity is as the name suggests an
>> > > 'Activity'. User has to clearly start doing something different for it
>> > > to be justifiably new activity. At least this is my view on things.
>> >
>> > > On Dec 16, 2:14 pm, Romain Guy <[email protected]> wrote:
>> > >> Thanks Dianne, I should have been clearer: it is indeed perfectly
>> fine
>> > >> to switch between Views, there are good reasons to do so. But
>> > >> replacing the Activity model is not a good one.
>> >
>> > >> One thing is certain, it is wrong to think that it would be an
>> > >> optimization. Like I said, it will only slow down your application's
>> > >> startup time, use more memory, slow down layout and drawing, etc.
>> >
>> > >> As for relying on the system to kill other apps, it's not a good
>> > >> approach either. You are simply causing a disservice to the user for
>> > >> absolutely no good reason.
>> >
>> > >> Please instead explain why you don't want to use the Activity model
>> so
>> > >> we can either explain it better or improve it.
>> >
>> > >> On Tue, Dec 16, 2008 at 8:02 PM, Dianne Hackborn <
>> [email protected]> wrote:
>> > >> > There is nothing intrinsically right or wrong with either approach.
>>  It is
>> > >> > just as wrong to say that you shouldn't use the activity model for
>> your UI,
>> > >> > as it is to say that you should never switch between multiple views
>> in the
>> > >> > same activity.
>> >
>> > >> > For the issue Romain is addressing, I would agree that it is
>> generally wrong
>> > >> > to decide that you don't want to deal with multiple activities even
>> though
>> > >> > you want your application to have the same behavior as if it did,
>> but just
>> > >> > don't want to deal with them.  All you'll end up doing is making
>> any
>> > >> > application that tries to behave consistently with others, but
>> doesn't
>> > >> > quite.
>> >
>> > >> > Also if you go off into the woods with your own UI management
>> inside of a
>> > >> > single activity, you are going to lose a lot of the things the
>> framework
>> > >> > does for you: you will need to do your own state saving and
>> restoring for
>> > >> > whatever additional stuff you have in your UI so that the user will
>> > >> > correctly return to it, do your own handling of back, and decide
>> when to
>> > >> > reset back to the root state and when not.
>> >
>> > >> > So there are certainly situations where it makes sense to switch
>> between
>> > >> > views in an activity: heck, there is sample code for this such as
>> in the tab
>> > >> > demos.  A good general rule of thumb is that if the user is
>> navigating to
>> > >> > what they perceive to be a new screen, it should be expressed as an
>> > >> > activity, and if they are switching between related views in the
>> same screen
>> > >> > is can often make sense to do that all in one activity.
>> >
>> > >> > On Tue, Dec 16, 2008 at 9:50 AM, loty <[email protected]>
>> wrote:
>> >
>> > >> >> I'm actually on the same page with Mark. To me Android's history
>> > >> >> mechanism is more of a hassle than a benefit especially if you use
>> > >> >> view=activity anathema. Personally I found that views inflating is
>> not
>> > >> >> that slow at all. I didn't measure memory footprint of my
>> applications
>> > >> >> but Hey, let Android swap some other application out if my app
>> needs
>> > >> >> more RAM :) At least I won't have to bother with endless
>> activities
>> > >> >> nightmare.
>> > >> >> Perhaps I should look into FrameLayout more closely.
>> >
>> > >> >> On Dec 16, 12:14 pm, Romain Guy <[email protected]> wrote:
>> > >> >> > Such an approach would be very inefficient for several reasons.
>> First
>> > >> >> > of all it requires to inflate many resources that won't be
>> needed
>> > >> >> > right away, which will slow down your application startup time.
>> It
>> > >> >> > will also increase memory usage. Then you will defeat the
>> history
>> > >> >> > mechanism built in Android, thus forcing you to implement the
>> back
>> > >> >> > yourself, and everything it entails. It's a lot more work for
>> you, and
>> > >> >> > you will probably end up having a user experience that feels
>> like
>> > >> >> > other Android apps but not quite.
>> >
>> > >> >> > What performance issue are you trying to solve?
>> >
>> > >> >> > On Tue, Dec 16, 2008 at 6:01 PM, Mark <[email protected]>
>> wrote:
>> >
>> > >> >> > > Would there be an advantage of using multiple Activity classes
>> each
>> > >> >> > > with their own primary layout as opposed to creating multiple
>> layout
>> > >> >> > > views and stacking them into FrameLayout?  One of the things I
>> > >> >> > > currently do in my WM development that has worked very well in
>> terms
>> > >> >> > > of performance is to create multiple layers for a form and
>> then show
>> > >> >> > > or hide the layers based on what the user is doing.  I could
>> see using
>> > >> >> > > the FrameLayout class to stack multiple other layouts that
>> would
>> > >> >> > > provide the same capabilities.  This would allow me to use a
>> single
>> > >> >> > > Activity to wrap what I need rather than creating multiple
>> Activities.
>> >
>> > >> >> > > thanks,
>> > >> >> > > Mark
>> >
>> > >> >> > --
>> > >> >> > Romain Guy
>> > >> >> > Android framework engineer
>> > >> >> > [email protected]
>> >
>> > >> >> > Note: please don't send private questions to me, as I don't have
>> time
>> > >> >> > to provide private support.  All such questions should be posted
>> on
>> > >> >> > public forums, where I and others can see and answer them
>> >
>> > >> > --
>> > >> > 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.  All such questions should be posted on
>> public
>> > >> > forums, where I and others can see and answer them.
>> >
>> > >> --
>> > >> Romain Guy
>> > >> Android framework engineer
>> > >> [email protected]
>> >
>> > >> Note: please don't send private questions to me, as I don't have time
>> > >> to provide private support.  All such questions should be posted on
>> > >> public forums, where I and others can see and answer them
>> >
>> > --
>> > Romain Guy
>> > Android framework engineer
>> > [email protected]
>> >
>> > Note: please don't send private questions to me, as I don't have time
>> > to provide private support.  All such questions should be posted on
>> > public forums, where I and others can see and answer them
>>
>>
>
>
> --
> 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.  All such questions should be posted on public
> forums, where I and others can see and answer them.
>
>
> >
>


-- 
Best Regards

Eric Chan

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