Android Application Vs. Process

I have created a Android Application with one Activity and package name "com.explore"

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

I run ps Command.

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
app_137   2974  91    478604 48524 ffffffff 00000000 S com.explore

I press back button. I get out of the application and come to Home screen Now once again run ps command.

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
app_137   2974  91    472428 42572 ffffffff 00000000 S com.explore

The process 2974 is still running. Can someone please explain me the behavior? That is memory usage,state or how long the process will persist? Should I kill process from my code after pressing back? How to kill process gracefully?

Answers


When you run an application, if it is not running already, it gets a new process ID. This ID stays with it until it is no longer in memory, at all. (This can be achieved and tested by using the "Force Stop" option in Application Settings.)

However, when a user hits the back or home buttons, the app does not exit, and in most cases, only pauses or stops.

You can read this documentation, which details the process lifecycle in detail. Points 1 and 2 basically say that a foreground process (or one behind something superficial, such as a dialog) will not be terminated unless absolutely necessary (force close or no memory). Point 3 is important; it says that any process which is no longer necessary--i.e. the user has "closed" it--may or may not be killed, depending on the memory of the device. And lastly, point 4, anything that isn't doing anything, but is just.. existing.. will be killed as soon as possible.

You may also want to look at the Activity lifecycle. This will accurately show you when each of the steps of the application occur (that is, when it's paused, when it's stopped, and when it's destroyed). The only thing it doesn't really cover is over-allocation of memory (or orientation changes, which re-trigger the entire lifecycle).

To conclude, remember that Android is smart. It manages its processes better than most developers ever would, and does try to keep as many processes as possible for easy reuse. Unless you are absolutely certain that you want your process out of memory, you should never kill it. And the way we have to kill and manage processes is never pretty.


Need Your Help

Linker file unselected

linker pic bootloader mplab pic32

I am dealing with a problem in my application with the linker file. What's happening is in the explorer tab it seems the linker file it's not "selected"

Reading NSUserDefaults from helper app in the sandbox

objective-c osx cocoa nsuserdefaults sandbox

I found some resources on reading the NSUserDefaults of another application.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.