package com.pinecone.technology.mcommerce.learning.android.chapter06; import java.util.List; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.RunningAppProcessInfo; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; public class ProcessLifecycleActivity extends Activity { private static final String TAG = "ProcessLifecycleActivity"; /** * 当前进程信息实例 */ RunningAppProcessInfo curRunningProcessInfo; /** * 初始化并且得到当前进程信息 */ private void initCurProcess() { ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE); List<RunningAppProcessInfo> processList = am.getRunningAppProcesses(); for (int i = 0; i < processList.size(); i++) { if (processList.get(i).processName .equals("com.taobao.mcommerce.sample")) { curRunningProcessInfo = processList.get(i); return; } } } /** * 转换进程当前Level显示方式,将int转为String * * @param imp * @return */ protected String convertImportance(int imp) { String returnStr = null; switch (imp) { case RunningAppProcessInfo.IMPORTANCE_FOREGROUND: returnStr = "IMPORTANCE_FOREGROUND"; break; case RunningAppProcessInfo.IMPORTANCE_VISIBLE: returnStr = "IMPORTANCE_VISIBLE"; break; case RunningAppProcessInfo.IMPORTANCE_SERVICE: returnStr = "IMPORTANCE_SERVICE"; break; case RunningAppProcessInfo.IMPORTANCE_BACKGROUND: returnStr = "IMPORTANCE_BACKGROUND"; break; case RunningAppProcessInfo.IMPORTANCE_EMPTY: returnStr = "IMPORTANCE_EMPTY"; break; default: break; } return returnStr; } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); initCurProcess(); log(convertImportance(curRunningProcessInfo.importance)); } @Override protected Dialog onCreateDialog(int id) { // TODO Auto-generated method stub if (id == 1) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure you want to exit?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { ProcessLifecycleActivity.this.finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); // AlertDialog alert = builder.create(); } return super.onCreateDialog(id); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add(0, 0, 1, "退出Activity"); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == 0) { this.showDialog(1); } return super.onOptionsItemSelected(item); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); log(convertImportance(curRunningProcessInfo.importance)); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); log(convertImportance(curRunningProcessInfo.importance)); } private void log(String msg) { Log.d(TAG, msg); } }