android使用Activity工具类,做Back退出事件处理
2017-03-27 17:49
477 查看
问题?Activity工具基类,做Back退出事件处理,android随时可以退出程序事件
点击退出键,销毁程序,销毁所有的活动。退出应用程序的实现:可以自己写个方法,例如:
网上有好几种写法:比如
网上查了很多方法,最常用的就这两个方法了,效果都只能是退出当前活动回到上一个活动,而且退出之前还会黑屏一下,极为不爽,又达不到目的。所以还是用最开始的方法来做这个功能,写一个活动栈,退出的时候将全部活动都移出就行了,具体代码已经总结好了
ActivityController为集中Activity处理类,就是将我们在工程的建立的所有Activity类全部加进来(通过addActivity方法),当需要移除活动的时候调用remove方法即可,而当我们需要退出程序的时候,直接调用finishAll方法,移除所有的活动类,不就可以退出程序了。简便又好用,代码还不冗余。
这个类就是集成Activity父类方法的基类,然后在所有的活动中继承这个基类,这样就简洁继承了Activity类,不影响活动类相关的使用。
最后就可以达到我们在任何时候都可以退出的效果,直接调用集中管理器的finishAll方法即可。
点击退出键,销毁程序,销毁所有的活动。退出应用程序的实现:可以自己写个方法,例如:
网上有好几种写法:比如
/*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(); } }
相关文章推荐
- android使用Activity工具类,做Back退出事件处理
- android dialog在activity中,如何处理activity捕捉不到back点击事件
- android开发步步为营之22:处理Activity中的back按钮事件
- android 退出程序及back键相关处理
- Android 程序退出的办法以及监听并处理用户按下back键的方法
- android处理Back键Home键和Menu键事件(转)
- android开发(41) Fragment中使用POP_BACK_STACK_INCLUSIVE达到一次跳转到栈底。类似Activity的 采用FLAG_ACTIVITY_CLEAR_TOP
- Android中Preference的使用以及监听事件分析处理流程
- Air for Android开发中使用Back键弹出是否退出对话框
- Air for Android开发中使用Back键弹出是否退出对话框
- NineOldAndroids在低版本系统的使用中点击事件滞留在原来位置的处理
- android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理
- Android 使用多个Intent 进行activity跳转 而没有finish的情况,如何直接退出系统
- Android 如何解决dialog弹出时无法捕捉Activity的back事件
- Android中使用广播机制退出多个Activity
- Activity中添加控件并进行事件处理之Toast使用
- Android中使用广播机制退出多个Activity
- Android中使用广播机制退出多个Activity
- Android中使用广播机制退出多个Activity
- Android按键拦截处理最佳实践范例(以Back事件为例)