您的位置:首页 > 移动开发 > Android开发

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

2017-03-27 17:49 477 查看
问题?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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: