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

来源:互联网 发布:淘宝买家秀链接在哪里 编辑:程序博客网 时间:2024/06/05 17:41

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

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

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() {@Overridepublic void onReceive(Context context, Intent intent) {finish();}};@Overridepublic void onResume() {super.onResume();// 在当前的activity中注册广播IntentFilter filter = new IntentFilter();filter.addAction("net.loonggg.exitapp");this.registerReceiver(this.finishAppReceiver, filter);}@Overrideprotected void onDestroy() {super.onDestroy();this.unregisterReceiver(this.finishAppReceiver);}}
其次就是子类继承,代码如下:

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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(getApplicationContext(),SecondActivity.class);startActivity(intent);}});}private long exitTime = 0;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (KeyEvent.KEYCODE_BACK == keyCode) {// 判断是否在两秒之内连续点击返回键,是则退出,否则不退出if (System.currentTimeMillis() - exitTime > 2000) {Toast.makeText(getApplicationContext(), "再按一次退出程序",Toast.LENGTH_SHORT).show();// 将系统当前的时间赋值给exitTimeexitTime = 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);}@Overrideprotected void onDestroy() {super.onDestroy();System.out.println("-------MainActivity-------->onDestroy()");}}
其实不用多说,我相信大家代码肯定都看懂了,主要是思路,代码都是非常简单的基础的。那下边我再介绍连续点击两次返回键退出应用程序的方法,方法如下:

/** * 记录标记时间 */private long exitTime = 0;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (KeyEvent.KEYCODE_BACK == keyCode) {// 判断是否在两秒之内连续点击返回键,是则退出,否则不退出if (System.currentTimeMillis() - exitTime > 2000) {Toast.makeText(getApplicationContext(), "再按一次退出程序",Toast.LENGTH_SHORT).show();// 将系统当前的时间赋值给exitTimeexitTime = System.currentTimeMillis();} else {exitApp();}return true;}return super.onKeyDown(keyCode, event);}
到这里就完了!非常简单吧!

1 0
原创粉丝点击