Android life cycle
Upcoming SlideShare
Loading in...5

Android life cycle






Total Views
Slideshare-icon Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    Android life cycle Android life cycle Presentation Transcript

    • Android Life Cycle Wei-Tsung Lin
    • 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".
    • 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.
    • Status of an activity● Active● Paused● Stopped● Dead
    • 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".
    • 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.
    • 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.
    • Dead● The activity has been finished manually, or garbage collected by system.
    • 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
    • Activity API● OnCreate()● OnStart()● OnResume()● OnPause()● OnStop()● OnRestart()● OnDestroy()
    • 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.
    • 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"); } }
    • 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.
    • 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.
    • 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.
    • 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"); }
    • Reference