Android BaseActivity App框架设计BaseActivity封装

在Android开发中,为了更好的对栈堆中的Activity进行管理以及更有效的对程序中可复用的方法进行复用,我们通常会为程序写一个Activity的基类,这次我就分享一个Activity基类的基本写法。希望能够帮助到兄弟姐妹们。

在开发的过程中,Activity通常会使用到FragmentActivity而FragmentActivity是继承Activity的所以们新建一个Activity让他继承FragmentActivity。

import android.os.Bundle;
import android.support.v4.app.FragmentActivity; 
public class KxActivity extends FragmentActivity { 
@Override protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 } 
}

接下来,我们给他加上一些通用的方法,让你的代码结构更加清晰,简洁。首先,写一个接口,让KxActivity进行实现,覆写里面的方法:

public interface Interface_KxActivity {
 /** 
  * 初始化界面 (在这里进行layout设置)
  */ 
void initRoot();
 /**
   * 初始化控件 
  */ 
void stupView(); 
/**
   * 初始化数据
   */ void stupData(); 
/**
   * 点击事件回调方法 
   * @param view 被点击的控件 
  */ 
void viewClick(View view); 
/**
   * 设置是否是碎片Activity 
   * @param is 
   */ 
void isFragmentActivity(boolean is);
}

好了,那么我们再来写一个跳转页面以及关闭应用的接口:

public interface Show_KxActivity { 
/**
   * 关闭当前Activity跳转
   * @param activity 当前Activity
   * @param cls 要跳转的Activity
   */ 
void finshTogo(Activity activity, Class cls); 
/**
   * 关闭当前Activity跳转
   * @param activity 当前Activity
   * @param intent intent活动
   */
 void finshTogo(Activity activity, Intent intent);
 /**
   * 关闭当前Activity跳转
   * @param activity 当前Activity
   * @param cls 要跳转的Activity
   * @param bundle Bundle对象
   */ 
void finshTogo(Activity activity, Class cls, Bundle bundle);
 /**
   * 不关闭当前Activity跳转 
   * @param activity 当前Activity
   * @param cls 要跳转的Activity
   */ 
void keepTogo(Activity activity, Class cls); 
/**
   * 不关闭当前Activity跳转
   * @param activity 当前Activity
   * @param intent intent活动
   */ 
void keepTogo(Activity activity, Intent intent); 
/**
   * 不关闭当前Activity跳转
   * @param activity 当前Activity
   * @param cls 要跳转的Activity
   * @param bundle Bundle对象
   */ 
void keepTogo(Activity activity, Class cls, Bundle bundle); 
/**
   * 结果返回页面跳转
   * @param intent Intent对象
   * @param requestCode 访问代码
   */ 
void forResultTogo(Intent intent,int requestCode); 
/**
   * 接收跳转页面的结果
   * @param requestCode 访问代码
   * @param resultCode 返回代码
   * @param intent Intent对象
   */ 
void OnKxActivityResult(int requestCode, int resultCode, Intent intent); 
/**
   * 杀死整个程序
   */ 
void finishApp();
}

这些都写好了之后我们还有个比较常用的,那就是logcat,这里我也把它写成一个接口,这里我们进行配置是否打印logcat等处理,这里我只写了个logcat,其他的以后慢慢完善:

public interface Configer_KxActivity { 
/**
   * 设置是否显示debug logcat
   * @param isDebug 是否显示debug数据
   */ 
void setIsDebug(boolean isDebug);
}

ok,接下来我们再把Logcat封装一下,这里我借鉴了一位大神的封装,并进行了一些改动,毕竟好东西要大家分享嘛。。不过现在我没找到这个的链接了,如果有冒犯的地方还请见谅,一共三个类:

这里格式化问题我就不贴出来了。。大家可以去这里看下,当然你也可以不用我这边的,自己写一个更牛逼的。

最后的封魔,需要继承的BaseActivity基类:

在Android开发中,为了更好的对栈堆中的Activity进行管理以及更有效的对程序中可复用的方法进行复用,我们通常会为程序写一个Activity的基类,这次我就分享一个Activity基类的基本写法。希望能够帮助到兄弟姐妹们。 

在开发的过程中,Activity通常会使用到FragmentActivity而FragmentActivity是继承Activity的所以们新建一个Activity让他继承FragmentActivity。

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class KxActivity extends FragmentActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}


接下来,我们给他加上一些通用的方法,让你的代码结构更加清晰,简洁。首先,写一个接口,让KxActivity进行实现,覆写里面的方法:

public interface Interface_KxActivity {
/**

  • 初始化界面 (在这里进行layout设置)
    /
    void initRoot();
    /
    *
  • 初始化控件
    /
    void stupView();
    /
    *
  • 初始化数据
    / void stupData();
    /
    *
  • 点击事件回调方法
  • @param view 被点击的控件
    /
    void viewClick(View view);
    /
    *
  • 设置是否是碎片Activity
  • @param is
    */
    void isFragmentActivity(boolean is);
    }

好了,那么我们再来写一个跳转页面以及关闭应用的接口:

public interface Show_KxActivity {
/**

  • 关闭当前Activity跳转
  • @param activity 当前Activity
  • @param cls 要跳转的Activity
    /
    void finshTogo(Activity activity, Class cls);
    /
    *
  • 关闭当前Activity跳转
  • @param activity 当前Activity
  • @param intent intent活动
    /
    void finshTogo(Activity activity, Intent intent);
    /
    *
  • 关闭当前Activity跳转
  • @param activity 当前Activity
  • @param cls 要跳转的Activity
  • @param bundle Bundle对象
    /
    void finshTogo(Activity activity, Class cls, Bundle bundle);
    /
    *
  • 不关闭当前Activity跳转
  • @param activity 当前Activity
  • @param cls 要跳转的Activity
    /
    void keepTogo(Activity activity, Class cls);
    /
    *
  • 不关闭当前Activity跳转
  • @param activity 当前Activity
  • @param intent intent活动
    /
    void keepTogo(Activity activity, Intent intent);
    /
    *
  • 不关闭当前Activity跳转
  • @param activity 当前Activity
  • @param cls 要跳转的Activity
  • @param bundle Bundle对象
    /
    void keepTogo(Activity activity, Class cls, Bundle bundle);
    /
    *
  • 结果返回页面跳转
  • @param intent Intent对象
  • @param requestCode 访问代码
    /
    void forResultTogo(Intent intent,int requestCode);
    /
    *
  • 接收跳转页面的结果
  • @param requestCode 访问代码
  • @param resultCode 返回代码
  • @param intent Intent对象
    /
    void OnKxActivityResult(int requestCode, int resultCode, Intent intent);
    /
    *
  • 杀死整个程序
    */
    void finishApp();
    }

这些都写好了之后我们还有个比较常用的,那就是logcat,这里我也把它写成一个接口,这里我们进行配置是否打印logcat等处理,这里我只写了个logcat,其他的以后慢慢完善:

public interface Configer_KxActivity {
/**

  • 设置是否显示debug logcat
  • @param isDebug 是否显示debug数据
    */
    void setIsDebug(boolean isDebug);
    }

ok,接下来我们再把Logcat封装一下,这里我借鉴了一位大神的封装,并进行了一些改动,毕竟好东西要大家分享嘛。。不过现在我没找到这个的链接了,如果有冒犯的地方还请见谅,一共三个类:

这里格式化问题我就不贴出来了。。大家可以去[这里](https://zhuanlan.zhihu.com/p/23289223)看下,当然你也可以不用我这边的,自己写一个更牛逼的。

最后的封魔,需要继承的BaseActivity基类:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.View;
import com.kxactivity.interfaces.Configer_KxActivity;
import com.kxactivity.interfaces.Interface_KxActivity;
import com.kxactivity.interfaces.Show_KxActivity;
import com.kxactivity.logcat.MyLog;
import com.kxactivity.tools.KxActivityStack;
/**

  • Activity的框架,程序中的Activity继承它后可以使用
  • 创建时间:2016年10月29日 * 修改时间:
  • @author ThomsonKang
    /
    public class KxActivity extends FragmentActivity implements Interface_KxActivity,View.OnClickListener,Show_KxActivity,Configer_KxActivity {
    public Activity mActivity;
    private FragmentManager fragmentManager; // 碎片管理
    private boolean isFragmentActivity = false; // 是否是碎片Activity
    public static boolean isDebug = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    initializationMethod(); KxActivityStack.getAppManager().addActivity(mActivity); //将Activity添加进栈堆中
    MyLog.e(KxActivityStack.getAppManager().currentActivity().getLocalClassName()+"开启");
    super.onCreate(savedInstanceState);
    }
    @Override
    protected void onDestroy() {
    super.onDestroy();
    }
    @Override
    protected void onPause() {
    super.onPause();
    }
    @Override
    protected void onResume() {
    super.onResume();
    }
    @Override
    protected void onStart() {
    super.onStart();
    }
    @Override
    protected void onStop() {
    super.onStop();
    }
    @Override
    public void initRoot() { }
    @Override public void stupView() { }
    @Override public void stupData() { }
    @Override public void viewClick(View view) { }
    /
    *
  • 如果是碎片Activity就返回一个碎片管理对象
  • @param is 是否是碎片Activity
    /
    @Override
    public void isFragmentActivity(boolean is) {
    isFragmentActivity = is;
    if (is){
    fragmentManager = getSupportFragmentManager();
    }
    }
    @Override
    public void onClick(View v) {
    viewClick(v);
    }
    /
    *
  • 初始化这个个Activity
    /
    private void initializationMethod(){
    mActivity = this; //方便子类调用
    initRoot();
    stupData();
    stupView();
    }
    /
    *
  • 关闭当前页面跳转
  • @param activity 当前Activity
  • @param cls 要跳转的Activity
    /
    @Override
    public void finshTogo(Activity activity, Class cls) {
    keepTogo(activity, cls);
    activity.finish();
    }
    /
    *
  • 关闭当前页面跳转
  • @param activity 当前Activity
  • @param intent intent活动
    /
    @Override
    public void finshTogo(Activity activity, Intent intent) {
    keepTogo(activity, intent);
    activity.finish();
    }
    /
    *
  • 关闭当前页面跳转
  • @param activity 当前Activity
  • @param cls 要跳转的Activity
  • @param bundle Bundle对象
    /
    @Override
    public void finshTogo(Activity activity, Class cls, Bundle bundle) {
    keepTogo(activity, cls, bundle);
    activity.finish();
    }
    /
    *
  • 不关闭当前页面跳转
  • @param activity 当前Activity
  • @param cls 要跳转的Activity
    /
    @Override
    public void keepTogo(Activity activity, Class cls) {
    Intent intent = new Intent();
    intent.setClass(activity, cls);
    activity.startActivity(intent);
    }
    /
    *
  • 不关闭当前页面跳转
  • @param activity 当前Activity
  • @param intent intent活动
    /
    @Override public void keepTogo(Activity activity, Intent intent) {
    activity.startActivity(intent);
    }
    /
    *
  • 不关闭当前页面跳转
  • @param activity 当前Activity
  • @param cls 要跳转的Activity
  • @param bundle Bundle对象
    /
    @Override public void keepTogo(Activity activity, Class cls, Bundle bundle) {
    Intent intent = new Intent();
    intent.putExtras(bundle);
    intent.setClass(activity, cls);
    activity.startActivity(intent);
    }
    /
    *
  • 返回结果页面跳转
  • @param intent Intent对象
  • @param requestCode 访问代码
    /
    @Override
    public void forResultTogo(Intent intent, int requestCode) {
    startActivityForResult(intent,requestCode);
    }
    /
    *
  • 接收跳转页面的结果返回
  • @param requestCode 访问代码
  • @param resultCode 返回代码
  • @param intent Intent对象
    /
    @Override public void OnKxActivityResult(int requestCode, int resultCode, Intent intent) { }
    /
    *
  • SDK中自带的onActivityResult方法,接收到返回后调用OnKxActivityResult方法
  • @param requestCode 访问代码
  • @param resultCode 返回代码
  • @param data Intent对象
    /
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    OnKxActivityResult(requestCode,resultCode,data);
    }
    /
    *
  • 设置是否显示log信息

@param isDebug 是否显示debug数据
/
@Override public void setIsDebug(boolean isDebug) {
this.isDebug = isDebug; MyLog.configAllowLog = isDebug;
}
/
*

  • 关闭整个应用程序
    */
    @Override
    public void finishApp(){ KxActivityStack.getAppManager().AppExit(getApplicationContext());
    }
    }

好了。。干货发送完毕,这是一个雏形,以后我会持续完善,争取打造出一个比较强大的Android快速开发框架。不喜勿喷,有错误还请指正,大家都是在开发道路上打拼的兄弟姐妹,还是那句话,希望能帮助到一些热爱Android的朋友。。谢谢,思密达!下次更新我会将这套代码放上jcenter和github上去。。这样就可以省去童鞋们copy来copy去了。。 

你可能感兴趣的:(Android BaseActivity App框架设计BaseActivity封装)