android 完全退出應用程序
          android android 退出應用程序, 單例模式管理Activity
          引自:http://www.yoyong.com/archives/199
          android 退出應用程序會調用android.os.Process.killProcess(android.os.Process.myPid())
          或是System.exit(0),這只是針對第一個Activity(也就是入口的Activity)時生效。如果有A,B,C
          三個Activity,而想在B 或C 中Activity 退出,調用上面的方法,往往會銷毀當前的Activity 返回上
          一個Activity。當然也可以逐個返回上一個Activity,直到跳轉到入口的Activity,最后退出應用程
          序。但這樣比較麻煩,而且逐個返回的體驗并不友好。
          網上比較流行的方法是定義棧,寫一個ExitApplication 類,利用單例模式管理Activity,在每個在
          Activity 的onCreate()方法中調用ExitApplication.getInstance().addActivity(this)方法,在退
          出時調用ExitApplication.getInstance().exit()方法,就可以完全退出應用程序了。
          ExitApplication 類
          代碼如下:
          view plaincopy to clipboardprint?
          1 import java.util.LinkedList;
          2 import java.util.List;
          3
          4 import android.app.Activity;
          5 import android.app.Application;
          6
          7 public class ExitApplication extends Application {


          9 private List<Activity> activityList=new LinkedList<Activity>();

          10 private static ExitApplication instance;
          11
          12 private ExitApplication()
          13 {
          14 }
          15 //單例模式中獲取唯一的ExitApplication 實例
          16 public static ExitApplication getInstance()
          17 {
          18 if(null == instance)
          19 {
          20 instance = new ExitApplication();
          21 }
          22 return instance;
          23
          24 }
          25 //添加Activity 到容器中
          26 public void addActivity(Activity activity)
          27 {
          28 activityList.add(activity);
          29 }
          30 //遍歷所有Activity 并finish
          31
          32 public void exit()
          33 {
          34
          35 for(Activity activity:activityList)
          36 {
          37 activity.finish();
          38 }
          39
          40 System.exit(0);
          41
          42 }
          43 }
          下面的三個類IndexActivity, BActivity,CActivity 是簡單的例子, 分別是
          IndexActivity–>BActivity–>CActivity 的跳轉順序。在每個Activity 類中onCreate()方法中調
          用ExitApplication.getInstance().addActivity(Activity activity)方法。在任何一個Activity 界面退
          出應用程序時,只要調用ExitApplication.getInstance().exit()方法,就可以在任何一個Activity
          中完全退出應用程序。
          IndexActivity 類源代碼:
          view plaincopy to clipboardprint?
          44 import android.app.Activity;
          45 import android.content.Intent;
          46 import android.os.Bundle;
          47 import android.view.View;
          48 import android.view.View.OnClickListener;
          49 import android.widget.Button;
          50
          51 public class IndexActivity extends Activity {
          52 /** Called when the activity is first created. */
          53 @Override
          54 public void onCreate(Bundle savedInstanceState) {
          55 super.onCreate(savedInstanceState);
          56 setContentView(R.layout.main);
          57
          58 Button next=(Button)findViewById(R.id.next_to_b);
          59 next.setOnClickListener(nextClick);
          60
          61 Button exit=(Button)findViewById(R.id.exit_main);
          62 exit.setOnClickListener(exitClick);
          63 ExitApplication.getInstance().addActivity(this);
          64
          65 }
          66
          67 OnClickListener nextClick=new OnClickListener() {
          68
          69 @Override
          70 public void onClick(View v) {
          71 // TODO Auto-generated method stub
          72
          73 Intent intent=new Intent(IndexActivity.this,BActivity.class);
          74 startActivity(intent);
          75
          76 }
          77 };
          78
          79 OnClickListener exitClick=new OnClickListener() {
          80
          81 @Override
          82 public void onClick(View v) {
          83 // TODO Auto-generated method stub
          84 ExitApplication.getInstance().exit();
          85 }
          86 };
          87 }
          BActivity 類源代碼:
          view plaincopy to clipboardprint?
          88 import android.app.Activity;
          89 import android.content.Intent;
          90 import android.os.Bundle;
          91 import android.view.View;
          92 import android.view.View.OnClickListener;
          93 import android.widget.Button;
          94
          95 public class BActivity extends Activity {
          96
          97 @Override
          98 protected void onCreate(Bundle savedInstanceState) {
          99 // TODO Auto-generated method stub
          100 super.onCreate(savedInstanceState);
          101
          102 setContentView(R.layout.b);
          103 Button next_to_c=(Button)findViewById(R.id.next_to_c);
          104 next_to_c.setOnClickListener(next_to_cClick);
          105
          106 Button exit_b=(Button)findViewById(R.id.exit_b);
          107 exit_b.setOnClickListener(exitClick);
          108 ExitApplication.getInstance().addActivity(this);
          109
          110 }
          111
          112 OnClickListener next_to_cClick=new OnClickListener() {
          113
          114 @Override
          115 public void onClick(View v) {
          116 // TODO Auto-generated method stub
          117
          118 Intent intent=new Intent(BActivity.this,CActivity.class);
          119 startActivity(intent);
          120
          121 }
          122 };
          123
          124 OnClickListener exitClick=new OnClickListener() {
          125
          126 @Override
          127 public void onClick(View v) {
          128 // TODO Auto-generated method stub
          129 ExitApplication.getInstance().exit();
          130 }
          131 };
          132 }
          CActivity 類源代碼:
          view plaincopy to clipboardprint?
          133 import android.app.Activity;
          134 import android.os.Bundle;
          135 import android.view.View;
          136 import android.view.View.OnClickListener;
          137 import android.widget.Button;
          138
          139 public class CActivity extends Activity{
          140
          141 @Override
          142 protected void onCreate(Bundle savedInstanceState) {
          143 // TODO Auto-generated method stub
          144 super.onCreate(savedInstanceState);
          145
          146 setContentView(R.layout.c);
          147
          148 Button exit_c=(Button)findViewById(R.id.exit_c);
          149 exit_c.setOnClickListener(exitClick);
          150 ExitApplication.getInstance().addActivity(this);
          151
          152 }
          153
          154 OnClickListener exitClick=new OnClickListener() {
          155
          156 @Override
          157 public void onClick(View v) {
          158 // TODO Auto-generated method stub
          159 ExitApplication.getInstance().exit();
          160 //如果只是調用以下其中的一個方法,并不會完全退出應用
          161 //android.os.Process.killProcess(android.os.Process.myPid());
          162 //System.exit(0);
          163 }
          164 };
          165
          166 }

          posted on 2013-04-10 09:05 姚先進 閱讀(195) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          主站蜘蛛池模板: 当阳市| 洛扎县| 喜德县| 崇阳县| 手机| 云浮市| 南漳县| 怀远县| 南康市| 宿迁市| 临夏市| 永丰县| 巴南区| 兴和县| 中超| 彰武县| 克山县| 池州市| 琼海市| 图片| 东港市| 休宁县| 湘乡市| 潼南县| 芦溪县| 枞阳县| 遵化市| 蛟河市| 介休市| 昌邑市| 大冶市| 旌德县| 娱乐| 开封县| 手机| 柳江县| 象山县| 台湾省| 石首市| 天全县| 西青区|