android之点击返回两次退出程序

来源:互联网 发布:薛之谦封面抄袭知乎 编辑:程序博客网 时间:2024/05/16 07:55

第一种方法中当退出应用后弹出应用程序崩溃的对话框,有时退出后还会再次启动,少部分的用户体验不太好。但现在也依旧还会有少部分的开发人员会使用这种方式,因为使用方式很简单

第一种方法:

public class MainActivity extends Activity {    // 定义一个变量,来标识是否退出    private static boolean isExit = false;    Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            isExit = false;        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK) {            exit();            return false;        }        return super.onKeyDown(keyCode, event);    }    private void exit() {        if (!isExit) {            isExit = true;            Toast.makeText(getApplicationContext(), "再按一次退出程序",                    Toast.LENGTH_SHORT).show();            // 利用handler延迟发送更改状态信息            mHandler.sendEmptyMessageDelayed(0, 2000);        } else {            finish();            System.exit(0);        }    }}
为了更好用户体验一般常用第二种方法,第二种方式是吧activity放到集合中,返回退出应用程序去销毁activity来完成操作

第二种方法:

<创建一个继承Application的类>
public class myApplication extends Application {
private List<Activity> oList;//用于存放所有启动的Activity的集合

public void onCreate() {
super.onCreate();
oList = new ArrayList<Activity>();
}

/**
* 添加Activity
*/
public void addActivity_(Activity activity) {
// 判断当前集合中不存在该Activity
if (!oList.contains(activity)) {
oList.add(activity);//把当前Activity添加到集合中
}
}

/**
* 销毁单个Activity
*/
public void removeActivity_(Activity activity) {
//判断当前集合中存在该Activity
if (oList.contains(activity)) {
    oList.remove(activity);//从集合中移除
    activity.finish();//销毁当前Activity
}
}

/**
* 销毁所有的Activity
*/
public void removeALLActivity_() {
     //通过循环,把集合中的所有Activity销毁
for (Activity activity : oList) {
     activity.finish();
}
}
}

<创建BaseActivity 继承 Activity> 用于管理所有的Activity,所有的Activity都继承这个类

public class BaseActivity extends Activity {
private myApplication application;
private BaseActivity oContext;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (application == null) {
    // 得到Application对象
    application = (myApplication) getApplication();
}
oContext = this;// 把当前的上下文对象赋值给BaseActivity
addActivity();// 调用添加方法
}

// 添加Activity方法
public void addActivity() {
application.addActivity_(oContext);// 调用myApplication的添加Activity方法
}
//销毁当个Activity方法
public void removeActivity() {
application.removeActivity_(oContext);// 调用myApplication的销毁单个Activity方法
}
//销毁所有Activity方法
public void removeALLActivity() {
application.removeALLActivity_();// 调用myApplication的销毁所有Activity方法
}

/* 把Toast定义成一个方法  可以重复使用,使用时只需要传入需要提示的内容即可*/
public void show_Toast(String text) {
Toast.makeText(oContext, text, Toast.LENGTH_SHORT).show();
}
}

<MainActivity>

public class oneActivity extends BaseActivity {


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onelayout);
}
// 绑定按钮
public void button(View v) {
Intent intent = new Intent(this, MainActivity.class);//跳转到主界面
startActivity(intent);
}
}

第二种方法是参考网上的代码

连接:http://blog.csdn.net/u013804382/article/details/52788900


原创粉丝点击