Richard Freeman on 4 Oct 2010 08:45:55 -0700

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Android (was Blocking A Program From Running - android too)

On 10/03/2010 02:32 PM, Jason Stelzer wrote:
> What ways are you referring to? Please elaborate because I'm really
> not seeing much at all in the way of analogy.

Any app can run a service, which checks some internet server every 30
seconds.  Such an app will prevent the phone from ever sleeping, and
thus its battery will drain quickly.

Now, that is an extreme example, but there are tons of apps that I'd
like to use because they provide feature A, and I don't want to choose
not to use them because they also provide feature B that I don't like.
Instead I'd like the phone to allow feature A to work, and prevent
feature B from working.

> So how does an app start? When you click that icon, a message is sent
> and an activity is brought to the foreground.
> However, this is achieved via the event broadcasting subsystem. In
> order to receive events, applications need to register what events
> they can receive and be able to respond to them.

However, apps can also start services, or attach themselves to events
that I don't want them to attach to.  My only choice as a user is to
install it or not install it.  That isn't much of a choice.

> Ok, so why do we need this ability? When you install a program, you
> see what kinds of events it's going to receive and what type of
> interactions with the system it's going to have. Beyond adding an
> obnoxious popout menu of confusing 'settings', what does this offer
> the majority of people?

The ability to control what is going on with their phones.  Maybe I have
an app that shouldn't need to connect to the network, but it does so
anyway (perhaps to display ads) - I should be able to block this.  Maybe
I have an app with an optional alarm feature that has the ability to
wake itself up, and I only want it to run when I want it to run.

I fully understand that if I break my phone I get to keep the pieces,
and I'm fine with that.  I don't yell at Intuit if I hack the Windows
Registry settings for Quicken to death and the program doesn't start.
But, I also don't want to be prevented from doing this if I choose.

> Equally importantly, as a developer why would I want to allow a
> mechanism to break my application via mental confusion of the user
> followed by a one star rating and a comment of 'this is teh crap --
> duznt work lawl'?

As an app developer, nobody is asking you to provide this ability.  I'm
asking the android OS devs to provide this ability, and make sure that
there is nothing that you can do as an app developer to keep it from
working.  When you pay for my phone and data plan, I'll ask you for your
opinion as to whether this should be "allowed."  :)

> Granted, I haven't installed anywhere near a representative number of
> apps in the market, but I generally go 2 days between charges and my
> battery statistics speak for themselves. 

I don't think my phone has ever lasted two days on one charge, even with
almost nothing installed.  It has gotten a lot better but on occasion it
drains fast - probably some misbehaving app waking the phone all the
time.  It is very frustrating to not be able to control this.

> I have yet to find
> something on the market that didn't have multiple competing
> alternatives.

I don't share your feelings.  Usually there are only one or two really
good programs that do anything on the market.  Maybe I like 95% of what
an app does, and want to change 5% of it.  Why should I have to toss an
app that does 95% of what I need it to do simply because it does
something I don't like?

> The process life cycle for applications was changed significantly in
> 2.2. You simply cannot use task killer any longer. 

No disagreement here.  This needs support at the OS level, not just
after-the-fact hacks.

> Trying to force android to behave like a pc is not
> going to be a fun experience. But, if you're crazy enough to do it,
> you could always fork things and see where it leads you.

Well, that would certainly be my plan - I'm not yet on 2.2 but when I go
there I certainly plan to do my own builds (disabling stuff like remote
wipes/etc for exchange).  Cyanogen for the most part has been doing a
pretty good job with the OS, but if a little tweak here or there makes
my phone better I'm happy to do it.  The thing I love about open source
is that I can do what I want with my own hardware, and nobody can tell
me otherwise (or detect that I'm doing it).  I don't expect anybody else
to use my builds, and indeed from a selfish standpoint it is probably
better that they don't so that app devs don't start building
countermeasures...  :)

In any case, this isn't about users vs devs.  This is about providing
the best user experience and not letting individual apps dictate how the
experience goes.  Much of what you said boils down to "this isn't a PC."
 I agree - while the occasional phone-home on a PC-based app doesn't
impact me at all, it kills my battery and wastes meager RAM on a phone,
and the need for apps to fall into line is even greater on android than
it is on linux in general.

FYI - from what I've been reading the best short-term fix is to just
extract an apk from the phone, edit its manifest, and re-sign it (with a
test key or whatever).  That will change its permissions, and whatever
you set will be enforced by the OS.  Even if android only semi-automated
this process it would be a big improvement.

Philadelphia Linux Users Group         --
Announcements -
General Discussion  --