Why is calling Process.killProcess(Process.myPid()) a bad idea?

<rant>

In a perfect world, with perfect code and libraries, you shouldn’t need to call Process.killProcess(Process.myPid()) and the OS will correctly kill your application as appropriate. Also there will be peace in the Middle East, pigs will fly, and the halting problem will be solved.

Because all of these things haven’t happened yet there are times when you need to execute such ‘forbidden’ code.

Most recently for an Android game I made, the free version used an Ad library which would keep the application alive and also leak memory. The paid version didn’t have this problem as there were no ad libraries linked. My solution was to add a Quit button on the main menu that executed such code. My hopes were that the majority of people would hit this button when done and I don’t have to worry about it eating up memory. The paid version I just executed finish() and was done. (This was before In-app purchases for Google were available, so I had to make a paid and free version, also they may have fixed the issue by now and I could update said game but it really didn’t do too well and I doubt any time spent on it would be worth it)

Its kind of like in elementary/middle school they tell you that you can’t take the square root of a negative number. Then later in a higher level algebra class they say… well you can take the square root of a negative number but you get weird results but it’s consistent and solves the problem.

In other words, don’t execute the ‘forbidden’ code unless you know what you’re doing.

</rant>

Leave a Comment