专栏名称: 安卓开发精选
伯乐在线旗下账号,分享安卓应用相关内容,包括:安卓应用开发、设计和动态等。
目录
相关文章推荐
开发者全社区  ·  年薪300万大厂程序员被女友晒工资单被裁,百 ... ·  21 小时前  
开发者全社区  ·  北京86年大叔自救式征婚相亲 ·  昨天  
开发者全社区  ·  AI提升成人玩具用户体验 ·  昨天  
开发者全社区  ·  离谱瓜!约会8个女同事的大厂男 ·  昨天  
51好读  ›  专栏  ›  安卓开发精选

Android退出应用最优雅的方式

安卓开发精选  · 公众号  · android  · 2017-01-06 20:52

正文

(点击 上方公众号 ,可快速关注)


来源:soul_code

链接: blog.csdn.net/soul_code/article/details/50425803

如有好文章投稿,请点击 → 这里了解详情


我们先来看看几种常见的退出方法(不优雅的方式)


一、容器式


建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Activity


import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

public class BaseActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super .onCreate(savedInstanceState);

// 添加Activity到堆栈

AtyContainer.getInstance().addActivity( this );

}

@Override

protected void onDestroy() {

super .onDestroy();

// 结束Activity&从栈中移除该Activity

AtyContainer.getInstance().removeActivity( this );

}

}

class AtyContainer {

private AtyContainer() {

}

private static AtyContainer instance = new AtyContainer();

private static List activityStack = new ArrayList ();

public static AtyContainer getInstance() {

return instance;

}

public void addActivity(Activity aty) {

activityStack.add(aty);

}

public void removeActivity(Activity aty) {

activityStack.remove(aty);

}

/**

* 结束所有Activity

*/

public void finishAllActivity() {

for ( int i = 0 , size = activityStack.size(); i size; i++) {

if ( null != activityStack.get(i)) {

activityStack.get(i).finish();

}

}

activityStack.clear();

}

}


这种方法比较简单, 但是可以看到activityStack持有这Activity的强引用,也就是说当某个Activity异常退出时,activityStack没有即使释放掉引用,就会导致内存问题,接下来我们看一种类似的方式,但是会稍微优雅一点点


二、广播式


通过在BaseActivity中注册一个广播,当退出时发送一个广播,finish退出


public class BaseActivity extends Activity {

private static final String EXITACTION = "action.exit" ;

private ExitReceiver exitReceiver = new ExitReceiver();

@Override

protected void onCreate(Bundle savedInstanceState) {

super .onCreate(savedInstanceState);

IntentFilter filter







请到「今天看啥」查看全文