Android 4.X系列の界面设计中退出Android程序的代码

 

 

 

运用菜单(Menu)退出安卓应用程序(APK)的方法用例(附上Demo下载)

 

"在我看来手动退出也存在它的理由:1防止用户的误操作,减低用户操作风险的同时保证用户的使用时间,这是大多数出品人想看到的 2意义容易混淆,Android的物理返回按键是否在每一个场合上都有包含了”返回”"退出”的含义?或者说返回等同与退出? 3询问似的提醒”是否退出app?”对于不理解或者不知道后台管理(小白用户)的用户来说是人性化的一面,因为退出的出发点很明确,用户要看到明确反馈是完全退出app我才放心,消除用户偷跑流量、和占用后台资源的疑心。但对于老用户或者频繁跳转页面主页的用户来说,频繁的提示退出询问是很崩溃的事情,用户会有被绑架或者感觉本人的智慧受到了质疑。
在长远的角度看来,手动退出应该是不存在的,因为退出的目的是明确的,人们乐于与接受指令一输出机器就立马执行的结果,那才是最初的目的。"

以上原文评论来自于 : http://uedc.163.com/7245.html 的 @c-d迪 ; 在这位仁兄楼下有个朋友 @myth 的吐槽也是可以理解的.

 

事实上,网上有很多实现方法,我这里也给大家介绍一种实现方法。比如现在我有N个Activity,而每一个Activity里面都可以通过菜单键来退出应用程序,该怎么办呢?是不是每一个Activity里面都写下菜单呢?当然不需要,我们可以定义一个通用的BaseActivity,这个Activity当然继承最基本的Activity,而我们在BaseActivity里面实现菜单的功能,实现程序的退出,然后在程序里面其他的Activity来继承至这个BaseActivity。

View Code
 1 package com.apkstory;  
 2   
 3 import java.util.ArrayList;  
 4   
 5 import android.app.Activity;  
 6 import android.app.AlertDialog;  
 7 import android.content.DialogInterface;  
 8 import android.content.DialogInterface.OnClickListener;  
 9 import android.os.Bundle;  
10 import android.util.Log;  
11 import android.view.Menu;  
12 import android.view.MenuItem;  
13   
14 public class BaseActivity extends Activity {  
15   
16 public static final String TAG = "BaseActivity" ;  
17 public static ArrayList<Activity> activityList = new ArrayList<Activity>();  
18   
19 @Override  
20 protected void onCreate(Bundle savedInstanceState) {  
21 super.onCreate(savedInstanceState);  
22 activityList.add(this);  
23 Log.i(TAG, activityList.toString()) ;  
24 }  
25   
26 @Override  
27 public boolean onCreateOptionsMenu(Menu menu) {  
28 menu.add(0, 0, 0, "退出程序");  
29 return super.onCreateOptionsMenu(menu);  
30 }  
31   
32 @Override  
33 public boolean onOptionsItemSelected(MenuItem item) {  
34 if (item.getItemId() == 0) {  
35 exitApp();  
36 }  
37 return super.onOptionsItemSelected(item);  
38 }  
39   
40 @Override  
41 protected void onDestroy() {  
42 super.onDestroy();  
43 activityList.remove(this);  
44 Log.i(TAG, activityList.toString()) ;  
45 }  
46   
47 /** 
48 * 完完全全退出应用程序 
49 */  
50 public void exitApp() {  
51 AlertDialog.Builder builder = new AlertDialog.Builder(this);  
52 builder.setTitle("提示");  
53 builder.setMessage("您确定要退出程序吗?");  
54 builder.setPositiveButton("确定", new OnClickListener() {  
55   
56 @Override  
57 public void onClick(DialogInterface dialog, int which) {  
58 if (activityList.size() > 0) {  
59 for (Activity activity : activityList) {  
60 activity.finish();  
61 }  
62 android.os.Process.killProcess(android.os.Process.myPid());  
63 }  
64 }  
65 });  
66 builder.setNegativeButton("取消", null);  
67 builder.show();  
68 }  
69   
70 }  
posted @ 2012-10-02 05:19  罗宗望  阅读(363)  评论(0编辑  收藏  举报