对于一个应用程序可能有很多个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() { @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); } }其次就是子类继承,代码如下:
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()"); } }其实不用多说,我相信大家代码肯定都看懂了,主要是思路,代码都是非常简单的基础的。那下边我再介绍连续点击两次返回键退出应用程序的方法,方法如下:
/** * 记录标记时间 */ 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); }到这里就完了!非常简单吧!