android应用程序如何退出?探究程序退出的方法

     我们学习android的Activity是就已经知道,随着一个新的Activity被创建,旧的Activity会被压入栈里。当我们的应用程序里有很多的Activity时,随着用户的使用,在内存充足的情况下,会有一个又一个Activity被压入栈,当我们用完了,暂时不用这个应用时,我们往往会按返回键。。那么,往往打开过多少Activity,就需要按多少次返回键。这是非常痛苦的。结合自身经验,和我查询的一些资料,我找到了几种退出应用的解决办法。

一,写一个广播。。

        我们在每个Activity中,可以写一个BroadcastReceiver ,然后在退出的时候发出去一个广播,Activity在接到广播的时候,调用自身的finish()方法。比如,我们写一个BaseActivity。

package com.zhw.all_quit;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
/**
 * Created with IntelliJ IDEA.
 * User: Wymon Zhang
 * Date: 13-7-27
 * Time: 下午10:30
 * 建立一个基础活动,然后可以让以后所有的Activity都继承他来实现
 */
public class BaseActivity  extends Activity {
	
    //注册一个广播的内部类,当收到关闭事件时,调用finish方法结束当前的Activity
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    };

    @Override
    public void onResume() {
        super.onResume();
        //在当前的activity中注册广播
        IntentFilter filter = new IntentFilter();
        filter.addAction(GlobalVarable.EXIT_ACTION);
        this.registerReceiver(this.broadcastReceiver, filter);
    }
}
然后在要退出的地方
 public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {

            long secondTime = System.currentTimeMillis();

            if (secondTime - firstTime > 1000) {//如果两次按键时间间隔大于1000毫秒,则不退出
                Toast.makeText(UiMainActivity.this, "再按一次退出程序...", Toast.LENGTH_SHORT).show();
                firstTime = secondTime;//Ui更新firstTime
                return true;
            } else {
                Intent intent = new Intent();
                intent.setAction(GlobalVarable.EXIT_ACTION); // 退出
                this.sendBroadcast(intent);// 发送广播
                super.finish();
                //退出线程,销毁静态变量
                System.exit(0);
            }
        }

        return super.onKeyUp(keyCode, event);
    }
对了,需要定义一个firsttime
感觉这个方法还不错。。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章