android中实现完全退出程序方法(退出所有activity)

 更新时间:2015年05月20日 09:56:23   投稿:junjie  
这篇文章主要介绍了android中实现完全退出程序方法(退出所有activity),本文方法是博主个人使用的一个方法,据说效果非常好,需要的朋友可以参考下

这是一个很多很多人都 会遇到的问题,我也试过了很多方法,都不怎么好用。
比如:

复制代码 代码如下:

System.exit(0);

不行。
还有什么跳转到第一个activity,同时把栈顶的activity全部清除,最后再finish();还是不行。。不知道为什么。
这里是我自己的一个方法,效果非常好。
原理:在每个activity都注册一个广播接收器,用来接收关闭activity的广播。当需要退出程序的时候就发送一条关闭activity的广播,这样所有的activity都会接收到,然后所有activity都会自己finish了。

复制代码 代码如下:

package com.example.exitsystem;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;

/**
 * 所有activity都继承此类,同时也就等于注册了广播,
 * 当需要完全退出系统的时候就可以发送广播,
 * action为com.example.exitsystem.system_exit(自定义),
 * 这样就可以随时退出所有的activity了
 * @author LinZhiquan
 *
 */
public class SuperActivity extends Activity {
 /** 广播action */
 public static final String SYSTEM_EXIT = "com.example.exitsystem.system_exit";
 /** 接收器 */
 private MyReceiver receiver;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  //注册广播,用于退出程序
  IntentFilter filter = new IntentFilter();
  filter.addAction(SYSTEM_EXIT);
  receiver = new MyReceiver();
  this.registerReceiver(receiver, filter);
 }
 
 @Override
 protected void onDestroy() {
  //记得取消广播注册
  this.unregisterReceiver(receiver);
  super.onDestroy();
 }
 
 private class MyReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
   finish();
  }
 }
}


复制代码 代码如下:

package com.example.exitsystem;

import android.os.Bundle;

/**
 * 普通activity, 继承SuperActivity
 * @author LinZhiquan
 *
 */
public class MainActivity extends SuperActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}


需要退出程序的时候发送一条广播即可。

复制代码 代码如下:

        Intent intent = new Intent();
        intent.setAction(SuperActivity.SYSTEM_EXIT);
        sendBroadcast(intent);

相关文章

  • OkHttp3中默认不保持Cookie的解决方法

    OkHttp3中默认不保持Cookie的解决方法

    这篇文章主要给大家介绍了关于OkHttp3中默认不保持Cookie的解决方法,文中先对OKhttp3中的cookies进行了简单的介绍,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • Android开发中优秀的app 异常处理机制

    Android开发中优秀的app 异常处理机制

    这篇文章主要介绍了Android开发中优秀的app 异常处理机制 的相关资料,需要的朋友可以参考下
    2015-12-12
  • Android 4.4以上

    Android 4.4以上"沉浸式"状态栏效果的实现方法

    Android与ios效果互仿早已不是什么稀奇的事,我猜大概这个效果来自ios吧,有争议说这种效果不能叫做沉浸式,叫透明状态栏更合适,我也感觉这和沉浸式的含义不太一致。但是大家都这么叫了,那就这样呗。下面来一起看看关于Android 4.4以上"沉浸式"效果的实现方法。
    2016-09-09
  • Android中Item实现点击水波纹效果

    Android中Item实现点击水波纹效果

    这篇文章主要给大家介绍了关于Android中Item实现点击水波纹效果的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Android 自定义LayoutManager实现花式表格

    Android 自定义LayoutManager实现花式表格

    这篇文章主要介绍了Android 自定义LayoutManager实现花式表格,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 安卓版本微信跳一跳自动执行代码剖析

    安卓版本微信跳一跳自动执行代码剖析

    这篇文章主要为大家详细剖析了安卓版本微信跳一跳自动执行代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 详解利用Flutter中的Canvas绘制有趣的图形

    详解利用Flutter中的Canvas绘制有趣的图形

    本文将利用Flutter中的Canvas绘制三个有趣的图形:使用等边三角形组合成彩虹伞面、五角星和彩虹,快来跟随小编一起动手尝试一下吧
    2022-03-03
  • android开发中获取手机分辨率大小的方法

    android开发中获取手机分辨率大小的方法

    不管是在我们的布局还是在实现代码中进行操控,我们的灵活性都不是局限于一个固定的数值,而是面对不同的手机对象都有一个适应的数值。
    2013-04-04
  • 进度条ProgressBar及ProgressDialog(实例)

    进度条ProgressBar及ProgressDialog(实例)

    下面小编就为大家带来一篇进度条ProgressBar及ProgressDialog(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Android pdf viewer在android studio应用问题说明详解

    Android pdf viewer在android studio应用问题说明详解

    这篇文章主要介绍了Android pdf viewer在android studio应用问题说明的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09

最新评论