通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序
2015-11-12 00:00
483 查看
对于一个应用程序可能有很多个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); }到这里就完了!非常简单吧!
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- 数据中心和云未来的十二大趋势
- 使用 Iisext.vbs 删除应用程序依存关系的实现方法
- Sql Server 应用程序的高级Sql注入第1/2页
- CMD命令行中以管理员权限启动应用程序实现方法
- rails创建应用程序实例
- 实现android应用程序自动化测试的批处理脚本
- 使用 iisext.vbs 添加应用程序依存关系的实现方法
- "虚拟路径"..."映射到另一个应用程序,这是不允许的!
- 创建第一个ASP.NET应用程序(第1节)
- C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
- win2003 R2升级提示另一个应用程序要求重新启动的解决方法
- IIS服务器应用程序不可用解决技巧
- 如何将C语言代码转换为应用程序(也就是编译)
- JS启动应用程序的一个简单例子
- Applet小应用程序开发简介
- IIS 应用程序保护级别说明
- asp.net“服务器应用程序不可用” 解决方法
- C# WinForm应用程序降低系统内存占用方法总结
- C#实现由四周向中心缩小的窗体退出特效
- C# WinForm程序完全退出的问题解决