Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

android使用Activity工具类,做Back退出事件处理

$
0
0

问题?Activity工具基类做Back退出事件处理android随时可以退出程序事件


点击退出键,销毁程序,销毁所有的活动。退出应用程序的实现:可以自己写个方法,例如:

网上有好几种写法:比如
 /*finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);*/

 网上查了很多方法,最常用的就这两个方法了,效果都只能是退出当前活动回到上一个活动,而且退出之前还会黑屏一下,极为不爽,又达不到目的。所以还是用最开始的方法来做这个功能,写一个活动栈,退出的时候将全部活动都移出就行了,具体代码已经总结好了


ActivityController集中Activity处理类,就是将我们在工程的建立的所有Activity类全部加进来(通过addActivity方法),当需要移除活动的时候调用remove方法即可,而当我们需要退出程序的时候,直接调用finishAll方法,移除所有的活动类,不就可以退出程序了。简便又好用,代码还不冗余

package com.example.ldp.com.controller;/**
 * Created by Administrator on 2017/3/27.
 */

import android.app.Activity;

import java.util.ArrayList;
import java.util.List;

/**
 * Description :ActivityController为 活动集中管理类
 * Author:ldp
 * Data:2017/3/27
 */
public class ActivityController {

    public static List<Activity> activities = new ArrayList<>();

    /*将活动类加入集中管理器中*/
    public static void addActivity(Activity activity){
        activities.add(activity);
    }

    /*将活动类从集中管理器中移除*/
    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }

    /*清除所有活动*/
    public static void finishAll(){

        for(Activity activity:activities){
            if(!activity.isFinishing()){
                activity.finish();
            }
        }
    }
}

这个类就是集成Activity父类方法的基类,然后在所有的活动中继承这个基类,这样就简洁继承了Activity类,不影响活动类相关的使用。

package com.example.ldp.com.controller;/**
 * Created by Administrator on 2017/3/27.
 */

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

/**
 * Description :BaseActivity为 活动基础类
 * Author:ldp
 * Data:2017/3/27
 */
public class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("LDP",getClass().getSimpleName());
        ActivityController.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityController.removeActivity(this);
    }
}


最后就可以达到我们在任何时候都可以退出的效果,直接调用集中管理器的finishAll方法即可。
package com.example.ldp.com.activity;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;

import com.example.ldp.com.controller.ActivityController;
import com.example.ldp.com.controller.BaseActivity;
import com.example.ldp.com.forestteaching.R;

public class ManagerActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_student);
        //退出调用
	//ActivityController.finishAll();
        
    }

}



作者:Mr_li13 发表于2017/3/27 17:49:08 原文链接
阅读:50 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>