通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序
2014-01-18 22:06
302 查看
对于一个应用程序可能有很多个Activity,可能每个人并不想一个个的去关闭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); }到这里就完了!非常简单吧!
相关文章推荐
- 通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序
- 通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序
- 通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序
- 通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序
- 通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序
- 关闭所有Activity和连续点击两次返回键关闭程序的方法
- 点击返回键两次关闭当前ACTIVITY
- activity中实现点连续点击两次返回键后程序退出(间隔1.5秒)
- fragment点击跳转到外部Activity后,怎么通过返回按钮返回
- 当一个Activity加多个Fragment的时候,点击导航返回按钮无效或者点击back键就把Activity关闭了的问题
- android连续点击两次返回键退出代码
- 安卓---连续点击两次返回键退出程序---二级界面的退出程序
- 在某个Activity上点击返回时,退出全部的Activity并退出应用程序
- Android主界面连续两次点击物理返回键退出应用功能实现
- Android开发之两种方式实现连续点击两次返回键退出程序
- 弹出dialog后不可点击back返回,用广播退出所有activity
- Android连续点击两次按钮启动两次Activity
- dialog点击对话框之外的区域禁止取消,点击返回按钮取消对话框的同时关闭当前activity
- 点击返回键关闭应用程序的步骤
- android连续点击两次返回 退出程序