您的位置:首页 > 移动开发 > Android开发

通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序

2014-06-20 09:47 441 查看
对于一个应用程序可能有很多个Activity,可能每个人并不想一个个的去关闭Activity,也有可能忘了,那怎么关闭所有的未关闭的Activity呢,其实有很多方法,但是我最喜欢的一种就是通过广播事件去关闭,这样简单易懂,方便操作,很快捷。

首先就是建立一个父类,让所有的activity继承父类,这样就不用每次都去注册广播,只要在父类注册好就行了,代码如下:

[java] view
plaincopy





package net.loonggg.test;  

  

import android.app.Activity;  

import android.content.BroadcastReceiver;  

import android.content.Context;  

import android.content.Intent;  

import android.content.IntentFilter;  

  

public class BaseActivity extends Activity {  

    /** 

     * 关闭Activity的广播,放在自定义的基类中,让其他的Activity继承这个Activity就行 

     */  

    protected BroadcastReceiver finishAppReceiver = new BroadcastReceiver() {  

        @Override  

        public void onReceive(Context context, Intent intent) {  

            finish();  

        }  

    };  

  

    @Override  

    public void onResume() {  

        super.onResume();  

        // 在当前的activity中注册广播  

        IntentFilter filter = new IntentFilter();  

        filter.addAction("net.loonggg.exitapp");  

        this.registerReceiver(this.finishAppReceiver, filter);  

    }  

  

    @Override  

    protected void onDestroy() {  

        super.onDestroy();  

        this.unregisterReceiver(this.finishAppReceiver);  

    }  

}  

其次就是子类继承,代码如下:

[java] view
plaincopy





package net.loonggg.test;  

  

import android.content.Intent;  

import android.os.Bundle;  

import android.view.KeyEvent;  

import android.view.View;  

import android.widget.Button;  

import android.widget.Toast;  

  

public class MainActivity extends BaseActivity {  

    private Button btn;  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

        btn = (Button) findViewById(R.id.btn);  

  

        btn.setOnClickListener(new View.OnClickListener() {  

  

            @Override  

            public void onClick(View v) {  

                Intent intent = new Intent(getApplicationContext(),  

                        SecondActivity.class);  

                startActivity(intent);  

            }  

        });  

    }  

  

    private long exitTime = 0;  

  

    @Override  

    public boolean onKeyDown(int keyCode, KeyEvent event) {  

        if (KeyEvent.KEYCODE_BACK == keyCode) {  

            // 判断是否在两秒之内连续点击返回键,是则退出,否则不退出  

            if (System.currentTimeMillis() - exitTime > 2000) {  

                Toast.makeText(getApplicationContext(), "再按一次退出程序",  

                        Toast.LENGTH_SHORT).show();  

                // 将系统当前的时间赋值给exitTime  

                exitTime = System.currentTimeMillis();  

            } else {  

                exitApp();  

            }  

            return true;  

        }  

        return super.onKeyDown(keyCode, event);  

    }  

  

    /** 

     * 退出应用程序的方法,发送退出程序的广播 

     */  

    private void exitApp() {  

        Intent intent = new Intent();  

        intent.setAction("net.loonggg.exitapp");  

        this.sendBroadcast(intent);  

    }  

  

    @Override  

    protected void onDestroy() {  

        super.onDestroy();  

        System.out.println("-------MainActivity-------->onDestroy()");  

    }  

  

}  

其实不用多说,我相信大家代码肯定都看懂了,主要是思路,代码都是非常简单的基础的。那下边我再介绍连续点击两次返回键退出应用程序的方法,方法如下:

[java] view
plaincopy





/** 

     * 记录标记时间 

     */  

    private long exitTime = 0;  

  

    @Override  

    public boolean onKeyDown(int keyCode, KeyEvent event) {  

        if (KeyEvent.KEYCODE_BACK == keyCode) {  

            // 判断是否在两秒之内连续点击返回键,是则退出,否则不退出  

            if (System.currentTimeMillis() - exitTime > 2000) {  

                Toast.makeText(getApplicationContext(), "再按一次退出程序",  

                        Toast.LENGTH_SHORT).show();  

                // 将系统当前的时间赋值给exitTime  

                exitTime = System.currentTimeMillis();  

            } else {  

                exitApp();  

            }  

            return true;  

        }  

        return super.onKeyDown(keyCode, event);  

    }  

到这里就完了!非常简单吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 退出activity