Your SlideShare is downloading. ×
Android life cycle
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Android life cycle


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Android Life Cycle Wei-Tsung Lin
  • 2. Introduction● Android is a mobile operating system.● There are many interrupts during normal using, such as a call.● Also, most desktop users have been familiar with multi-task operating system, expecting that they can browsing the web while listening to the musics.● However, the memory is not unlimited in mobile devices.● So, Android introduced "Life Cycle".
  • 3. Activity● In Android, each application is a process, called activity.● Android (aka Dalvik VM) maintains an unique activity stack to observer the status of process, and manager the memory.● Life cycle of an activity is managed by Android OS, not by application itself.
  • 4. Status of an activity● Active● Paused● Stopped● Dead
  • 5. Active● "Active" is the status that an activity is running.● There will be only one "Active" activity. The others are int the status of "Pause", "Stopped", and "Dead".
  • 6. Paused● "Paused" means an activity is in the background.● Creating toast, dialog, or receiving a phone call will make an running activity paused.● User cannot interact with an activity which is paused.
  • 7. Stopped● The activity has already exit the screen, no other action is running.● We can wake an stopped activity up by using "Notification" or multi-task button.
  • 8. Dead● The activity has been finished manually, or garbage collected by system.
  • 9. Low memory● When memory is running out, Dalvik will follow the recycle rule to release memory.1. Independent Activity/Service/Intent Receiver2. Stopped Activity (by LRU)3. Service4. Visiable Activity5. Running Activity
  • 10. Activity API● OnCreate()● OnStart()● OnResume()● OnPause()● OnStop()● OnRestart()● OnDestroy()
  • 11. ANR● Android will prompt you a notification that "Application Not Responding" when an activity executing without response for a long time.● Default timeout is 5 seconds.● To avoid that, developers shouldnt execute a long time task in the main thread, such as accessing Internet, database, or playing music.
  • 12. AsyncTaskprivate class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { protected Long doInBackground (URL... urls) { int count = urls.length; long totalSize = 0; for (int i = 0; i < count; i++) { totalSize += Downloader .downloadFile (urls[i]); publishProgress ((int) ((i / (float) count) * 100)); // Escape early if cancel() is called if (isCancelled ()) break; } return totalSize ; } protected void onProgressUpdate (Integer... progress) { setProgressPercent (progress[0]); } protected void onPostExecute (Long result) { showDialog ("Downloaded " + result + " bytes"); } }
  • 13. Service● Four components in Android: Activity, Service, BroadcastReceiver, ContentProvider● Except ContentProvider, the others main objects are running in the main thread.● The life cycle of Service is most persistent (longest).● System will kill a paused activity in very high possibility.
  • 14. Service● Putting a long time task into a thread is not enough.● Consider rotating your device. Actually the activity is killed, and then system recreate a new activity rotated. The thread will be killed too!● You should not only put the long time task into a new thread, but also a Service.● Although the original activity is killed, the service will execute as usual. You can make inter-process communication later.
  • 15. MessageQueue● Android implement a message queue to handle messages, which called Looper.● Its very helpful when you want to update UI outside the main thread(UI thread).● A handler can push a message into a looper, dispatch, and handler the message in the queue.● When creating a handler, it will bind to the looper of current activity automatically. Also, you can assign a specific looper to bind.
  • 16. IntentService● IntentService is actually a Service.● Using IntentService, you dont need to implement Looper, Message, and Handler yourself. Intent intent = new Intent(MainActivity.this, MyIntentService.class); intent.putExtra("tag", "message"); startService(intent); in MyIntentService: @Override protected void onHandleIntent(Intent intent) { String message = intent.getStringExtra("tag"); }
  • 17. Reference