Archive for the ‘ Auto Memory Manager ’ Category

AMM maintenance release

Hi guys.  Over the past couple of weeks I’ve gotten a few emails from Wildfire users not being able to find AMM in the Market.  So I’ve put in a fix to make it available to Wildfire users.  The problem was because of the change in how the market filters apps for devices based on their screen resolution and what resources i.e. images etc you have for your app.  It was a simple fix so now everybody can enjoy it.  Kinda… :)  Next thing to do is make this tablet friendly.

Auto Memory Manager on Amazon Appstore

Yesterday the Amazon Appstore was launched with the US and AMM was part of that launch.

I have to admit initially I was a bit sceptical about the Amazon Appstore but then one day it the value of it dawned on me. And I have to admit it was a pretty obvious usage scenario.

Amazon sells all kinds of things and they track this. Now if you’ve bought an Android phone they would be able to recommend you all these cool directly from the appstore. In fact every time you shop at Amazon they could potentially recommend you an Android app. Buy a pair of shoes? Amazon recommends a cardio trainer app. Buy a cookbook? Amazon recommends the Epicurious app. Who knows, maybe AMM will be one of those recommendations when you buy a hard drive or other gadget.

Maybe one day we would even get to the point where I can buy a phone and tell Amazon which apps I want pre-installed. Saving you the hassle of downloading them yourself.

Anyway, for those that are interested you can find AMM here in the Amazon Appstore.

Trying to find a testing framework

Over the last few days I’ve had a quick play with a couple of testing frameworks for Android.  Although not necessary they attempt to make testing for Android simpler.  The Google’s testing framework isn’t the most user friendly.

The two I’ve tried so far are Robotium and Robolectric.  The two serve different purposes and fundamentally work differently too.

  • Robotium
    • With the tag line “It’s like Selenium, but for Android” this is a black box test framework.
    • Simple to use with user friendly method calls to simulate user actions e.g. clickOnButton(buttonName)
    • Don’t need source code to work.  You can use Robotium to test an apk directly rather than having to compile your tests with your source code.
    • Because it is a black box UI test it runs relatively slowly compared to unit tests.
    • I found that the tests didn’t work properly when I ran them on my Nexus One.  This could be a problem because the emulator doesn’t have root access so I can’t test a lot of things properly if I can’t run the tests on my phone.
  • Robolectric
    • Robolectric lets you build unit tests for your Android UI.  It basically let’s you create tests that can run in a headless mode.
    • Tests run in the JVM rather than in the emulator so they run much faster.
    • The complete Android framework hasn’t been filled out for Robolectric so you may not be able to tests all types of Android functionality e.g. I found that ActivityManager hadn’t been implemented.
    • Open source, so if I wanted to I could implement the bits that were missing although this can be a bit involved and to do it properly you would require a detailed understanding of what you are testing.
    • Doesn’t work with custom controls.  Again you would need to build your own simulation of your custom view in order to do the test.
    • Because the JVM doesn’t have access to executables in the emulator e.g. su I am unable to test the main functionality of AMM.
Because of Robolectric’s limitations I am going to try to use Robotium for now even though it is much slower to run the tests.  Hopefully when Robolectric becomes more mature I’ll be able to use it.
I think it is important to point out that both these frameworks are relatively young but have good support from the developers.  When I posted questions on the their respective Google Groups I got response within 24 hours.  I think if I wasn’t testing an app that needed root access and only stuck to using the Android API both these frameworks would work quite well (for most of the time).  But I think at rate they are advancing we will soon have very good frameworks to work with.

Whoa! My code is bad!

So I’ve finally finished my exams and after a couple of weeks of relaxing and catching up on movies, tv shows, games etc. I’m trying to get back into coding mode.  So I’ve just loaded the AMM source and boy oh boy, my code is a freaking nightmare.  SO…I’ve set myself some goals.

  1. Write tests for AMM.  When I started writing AMM I didn’t know anything about unit testing apart from the general idea of the terminalogy.  Quite sad considering I’m actually a software tester by trade.  Anyway, in the last few releases of AMM it’s been increasingly hard to keep make sure that all the functionality is still working after each update.  So hopefully the tests will help increase the quality of my releases.
  2. Refactor my code.  Depending on how I go with this there may be significant rewrite of the code that may improve performance.  I will also look into simplifying the app.  At the moment I think it’s quite confusing.
  3. Release the source.  Once I’ve tidied things up a bit I plan on release the source for AMM.  I hope there will be some people interested in contributing some code.  I also hope to write a few posts about some of the code and my learning experience.  As a novice developer I had a lot to learn and I think there will probably a lot of people out there like me who may benefit from my experience.
Anyway, watch this space cause I’m back! :)

The Motorola problem

Recently there were a couple of people Auto Clean Up mode and complaining that their phone calls were getting killed.  This confused me…a lot since they already had their phone apps in the whitelist.  Lucky for me there was a very helpful person out there that sent me some logs and did some proactive investigation.  Without which I would have never been able to work this one out.

It turns out Motorola phones have a process called com.motorola.hiddenmenu that shows some stats if you enter a secret code.  It seems killing it has some side effects.  So anybody using a Motorola phone with AMM then you should add com.motorola.hiddenmenu to the whitelist.

Here are a couple of links that the Googles provided that mention what this mysterious process does.

Bug fix release (AMM 2.1.6)

As mentioned in the previous post there was a few bugs in AMM  I’ve fixed them and the latest release can be had on the Market.

AMM released

I’m just uploaded AMM to the Market.  Here are the changes that I’ve made.

  • Added Mem Usage for each app in List view.  This is the memory footprint of the app so you won’t see the same amount of memory freed up if you kill apps.  In fact if it’s an empty application then you will actually see no change in available memory.  But it will give you an idea of how much memory the app could take up if it was running.
  • In List view there is the option to Sort by Name and Sort by Mem Usage.  Name is sorted by ascending order and Mem Usage is sorted by descending order.
  • Hide Whitelist from menu if Auto Clean Up is not selected.
  • Tidied up some rogue pop up messages.
  • Updated ad network.  Nobody likes ads but it is a necessary evil and it helps provide me with some real world benefits.  And I appreciate every click.

For the next release I am planning on splitting the Auto Clean Up mode from the oom killer functionality.  This means that users with rooted phones won’t have access to the Auto Clean Up mode anymore.  I think from all the complaints that I get this is something nobody will miss.  I might completely split it out into a separate app but that really depends on how much free time I have and also if I have any idea on how to make a better task manager.

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.

Finally there’s Help!

One of the biggest feature request for AMM is a help/instructions on how to use the app and how it works.  Well after 2 months of being in the Market I’ve finally got round to doing it.  It’s a 10 page beast.   I think this could be a record for a mobile app.  At the moment it’s only in English.  I will translate this as soon as can which I hope won’t be in another 2 months.

I’ve also updated the free version first rather than the Premium version mainly because this would be more useful to new users.  I assume that you have used the free version before you got the Premium version.  So Premium users probably don’t need the help file as much.  But I’ll put it in before the end of the week.

So there you go.  Version 1.5.  Let there be Help!