AMM Beta 2

Hi guys.  Just a quick post to let y’all know that there’s a new beta out.  Check out the changelog for details.  If you have any issues/questions/suggestions just post them in the forum and you should get a response in a reasonable amount of time.

Why apps get killed

A lot of people write me or leave comments in the Market saying that AMM has killed their apps.  Most common is the Alarm apps.  Surprisingly up until now I haven’t blogged about this.  There are two answers to this depending on whether you have rooted your phone or not.  And they are both pretty simple.

Let’s start with the rooted scenario first.  If you have a rooted phone and you are not using the Auto Clean Up mode then when and how apps are killed to free up memory is related to the settings your apply e.g. Default, Mild, Aggressive or a custom setting.  So if the app in question is being killed then it means you are using too much memory.  Unfortunately some of these apps like the Clock/Alarm app run at a relatively low priority and get killed easily.  So the normal advice applies.  Turn down the settings until you are sure everything is still working as normal and turn it up slowly.  Another thing is also to keep your memory usage in check.  Having lots of services, widgets will use up memory.  If you are using a phone that has 256MB of RAM then you probably won’t need too many of those before you run low on memory.  The reality is that some phones don’t have as much memory and get easily overwhelmed.

If you are not using a rooted phone (or use the Auto Clean Up mode) then the answer is even simpler.  Just add the  Clock/Alarm app (or whatever it is you want to not get killed) to the Whitelist.  To do that just bring up one of the Running Processes list and select an app from the list and select “Add to Whitelist”.  After that the app will be added to the Whitelist and won’t get killed.

So that’s basically it.  In all cases apps get killed when the phone hits the memory thresholds that you set.

What are OOM priorities?

Someone brought it to my attention that OOM Priority wasn’t explained in the Help on AMM.  And it seems I haven’t written about it on this blog either.   So I thought I would just do a quick explanation of my understanding.  I don’t profess to be an expert on the subject so please feel free to correct me if anything I mention isn’t correct.

So to start OOM (out of memory) priority is a priority that the Android kernel sets for each process on the Android system.  So when the system is out of memory processes will get killed in descending order i.e. from low priority to high priority to release memory.  The priorities start at -16 at the highest to to +15 at the lowest.  -17 is a special value that is supposed to exclude the process from the oom-killer.  More on the “suppose” later.

These OOM priorities are split into 6 groups that loosely translate to the 5 levels of importance hierarchy in the Andriod SDK.  The 6 groups and their associated priorities are:

  • Foreground Application: -16 to 0
  • Visible Application: 1
  • Secondary Server: 2
  • Hidden Application: 3 to 7
  • Content Provider: 8 to 14
  • Empty Application: 15

OOM Grouping

In AMM you can look at apps grouped into their OOM priorities by looking at the Running Proceses list in the OOM grouping view.

Now about that “suppose” mentioned earlier.  After I implemented the functionality to change the priority of the app I noticed (and numerous people reported) that the priorities weren’t sticking after they were changed.  This included the keep-alive value i.e. -17 OOM priority.  It seems the Android kernel still manages the priorities even if you change them.  What makes this even more confusing is that different users seem to be getting varying mileage when they change.  For some people the kernel changes the priorities back immediately while for others it seems to stick for a long time.

So with that explanation I would suggest that you change these priorities carefully.  Obviously changing them will have could have real effect for how the phone and app runs.

If you still have question on this topic feel free to contact me via the usual channels i.e. comment, email, google group.  Not comments in the Market.

AMM major bug fix release

Sorry guys. I had to do a quick release. Someone pointed out that the Auto Clean Up interval was running every minute regardless of the Interval setting. Turns out I forgot to remove some debug code.

The birth of the Mad Squirrel Apps Google Group

I’ve created a Google Groups for Mad Squirrel Apps so people have a place to come together to discuss apps that I created.  At the moment there’s only one but I hope this will grow in the future.  Have a forum like Google Group makes sense since I get similar questions from a lot of my users so this can be a place where we can discuss these together.  It can also be a place where I can discuss ideas etc with you guys.  So let’s see how it goes.  You can find the group here.

AMM 2.1.4 beta release

I’ve put some fixes and changes and calling it AMM 2.1.4 beta.  This will hopefully make some people happy/happier.  I’m putting it out there for some testing to avoid anymore frustration/anger.  You can download it here.

If you have any problems with 2.1.4 beta please email me.  I won’t bite.  Promise.

Whitelist, running services and more confusion

In 2.1.1. I introduced the Whitelist functionality.  There have been a lot of confusion around this functionality and a few other things.  And it’s not something that I could have explained within the confines of the Market description.  Although in saying that people really need to read the changelog.  A lot of this has been mentioned there.  I am making big changes here to move AMM forward and the best way for users to keep up is to take a look at the changelog.  I try to keep this up to date and there is a link to it on the Help page within the app. Like most developers I find it annoying/disappointing/frustrating when I provide documentation that people don’t read and leave bad/stupid comments in the Market.  For those who don’t know there is no way for me to respond to a comment in the Market and literally 100% of negative comments are of no use to me in terms of fixing the problem since they don’t provide any information about why the problem is happening.  So if you have a problem then EMAIL ME.  I respond to every single email I get from a user so all I ask in return is that you email me with your problems.

So let’s start with the most obvious problem.  The whitelist functionality is ONLY available if you are using the Auto Clean Up mode.  I will be tidying up the next version so that if you have Auto Clean Up turned off you won’t see Whitelist mentioned anywhere.

Next thing.  The Auto Clean Up mode is the biggest change in the 2+ releases.  This turns AMM into a smart task killer that will try to mimic the kernel’s minfree functionality.  It is mainly to cater for users with unrooted phones.  But rooted users can use this functionality if they want.  (I am exclusively using it on my N1). When you use the Auto Clean Up mode you will need to add apps that provide alarm functionality or run on a service to the whitelist. This includes things like Alarm, Gmail, twitter apps, facebook etc.  Basically anything that you expect to receive updates from.  I am not sure but you may also need to add SMS and Phone to the whitelist as well.  To save people the hassle of doing this I have preloaded the whitelist with some common apps.

Some people have also been complaining about a AMM service running.  To make it crystal clear, AMM uses a service to apply settings and do various tasks so it doesn’t tie up the main activity.  This is more or less a basic Android principle.  So if you see it popping up from time to time (especially if you use Auto Clean Up mode) then that is normal.  Otherwise please notify me and we can discuss what is causing it to happen.  I haven’t been able to replicate this problem on my N1 or Hero.  So if you would like this fixed then please contact and provide more information.

SO just to reiterate and close out this post, I don’t put out releases knowingly with bugs in them.  And would like nothing more than to have people contact me with information when they do find any issues.  Don’t worry if you are not technical or have no idea what to tell me.  Just email me and I can walk you through what I need and how to get it.

Version 2+, 50000 downloads and lots of complaints

Last weekend I release v2.1.1 of AMM.  The version numbering aside this was a “2.0″ release in the sense that it was a big release.  I had spent a lot of time on it with lots of new code and new features all based around the trying to make AMM available to unrooted phones.  This has been my long time goal and really the original goal.  If it wasn’t for the discovery of the minfree values this would have been the first thing that I would have built.  So 2.1.1 was basically the culmination of a lot of thought and hard work.

Unfortunately since the release of 2.1.1 all I’ve got is angry emails and comments saying things like this is not an upgrade but a downgrade.  What really annoys me is not that they have left a bad remark about AMM but rather that all the information to explain what is happening is in the Changelog.  So basically they are making comments without knowing what it is that they are using.  And that makes me furious especially I try to keep this site and the content up to date.  This is really an insult to the effort and goodwill I put into the app.

I know if you are reading this post then you’re probably not one of those people.  And for that I thank you for your support.  Apart from release “AMM Version 2.0″ this week also marked another major milestone for AMM.  AMM finally went pass 50000 downloads! Yay!  So a big thank you for everyone that made that happen.

Despite all this nothing has changed.  I’m working fixing issues that are reported AND that is the MAIN thing.  If users let me know the problems they are having then I’m more than happy to fix them BUT if you leave pointless comments in the Market then I can’t.

It’s been a while…

Just thought I would drop a quick note on the blog since I haven’t posted for a while. I’m in the middle of adding some major functionality for AMM. Some of the functionality should hopefully help with some of the functional shortcomings of AMM. And maybe also bring on some new users at the same time.

At the moment I’m hoping to get a beta out mid to late next week and have it released by next week. So keep an eye out.

Living with a Nexus One

I’ve had my Nexus One (unrooted) for more than a week now and thought I would just post some of my experience and thoughts.

First thing I noticed coming from a HTC Hero is that its fast.  As fast as a iPhone 3G but not quite to 3GS standards.  As you would expect this makes the user experience much nicer.  What used to take a few seconds to load happens almost instantly.  This is how all Android phones should be.

But after using it for a few days some weird things started happening mainly with Listen (I use it a lot). It seemed to be shutting down unexpectedly fairly regularly and it looks like it’s because it’s hit the OOM threshold.

This is interesting to me because the OOM thresholds are obviously still at the default.  Also I am still using Listen when it gets shut down.  So this means that the kernel is shutting down the Listen service because the Listen frontend has a low priority from being in the background.  I would think that ideally that the kernel should check if the the frontend is connected to any services and if it was then exclude it from the clean up.

I’ve always suspected that this was the case but it has been hard to prove on a custom ROM running all kinds of other mods.  But now with a stock Eclair ROM there is no doubt.

(Sorry for my rant)

There are the other things that have also been reported e.g. over sensitive touch screen, touch points jumping around, hard to use capacitive buttons etc.  Nothing new here.  And even though there are all these short comings I still believe that the Nexus One is the best Android phone out there for the modder.  Purely because it’s so heavily supported and there are/will be fixes either by the official or unofficial community.  Also the fact that it has a FM tuner, N wifi and a multi-colour track ball.

So the conclusion is that:

  1. I love my Nexus One
  2. I’m going to root it sooner rather than later.