FoxFrame 框架说明
概述
FoxFrame 是一个为方便中小型项目开发而遍写的一个开发框架。封装了RxJava、Retrofit和一些工具方法。同时为MVP框架的搭建提供便利。
由于算是学习过程中的积累产物,一不小心就写了不少东西,导致很多工具类没有很好的介绍,甚至根本没有介绍。我是不会承认因为自己懒得写,所以如果有兴趣可以看看源码,若发现问题相当欢迎练习作者进行指正。希望我早日成为Android大佬,日薪过万
QQ:864706521
快速接入
在项目的 app.gradle 文件中的 dependencies 代码块中填写以下依赖
implementation 'com.github.binzeefox:AndroidTemplete:Tag'; //Tag为最新版本号
并在项目的 Project.Gradle 里的 allprojects.repositories 里添加 maven { url "https://jitpack.io" }
。然后同步项目即可
开始使用
直接将 Manifest 文件中的 <Application>
标签 name 属性指向com.binzeefox.foxframe.core.base.FoxApplication
或继承自该类的自定义Application即可
若项目本身有继承其它Application,可以在自定义Application 的onCreate()
方法中调用FoxCore.init(this);
即可。
注意,若跳过此步骤,大部分工具方法仍可以通过手动输入Context参数来调用,但有可能会导致奇怪的问题发生
FoxCore
该类为核心类,需要应用使用继承自FoxApplication的Application或者调用FoxCore.init(Application)
才能生效,该类包含几个工具方法。
通过该类,可以在应用任何位调用FoxCore.get()
方法获取FoxCore唯一实例。同时可以用FoxCore.getApplication()
在任何位置获取Application实例。
获取应用信息。
通过调用FoxCore.get().getPackageInfo();
即可快速获取应用信息
获取版本名
通过调用FoxCore.get().getVersionName();
即可获取当前应用的版本名称
获取版本号
通过调用FoxCore.get().getVersionCode();
即可获取long 类型的版本号。
全局数据
该类提供了一个简易的全局数据保存方法。
通过FoxCore.get().putGlobalData(String key, Object data)
方法存入数据。
该存入的数据可以在任何地方通过FoxCore.get().getGlobalData(String key, T defaultValue)
方法获取
通过 FoxCore.get().removeGlobalData(String key)
来删除数据。
通过FoxCore.get().submitGlobalData(String key, DataHolder.Callback callback)
订阅全局数据的变化情况
该数据是由HashMap进行保存的,如果过度使用可能会导致OOM。建议仅用该方法保存较小的数据(例如token之类的常用值)
具体可参考com.binzeefox.foxframe.core.tools.DataHolder.class
Activity 管理
可以通过FoxCore.get().getTopActivity()
获取当前栈顶实例,或通过FoxCore.get().popActivity()
进行弹栈并销毁栈顶Activity。
通过FoxCore.get().killActivity(int count)
批量销毁Activity,参数为从栈顶数想销毁的Activity数量。
通过FoxCore.get().getActivityList()
获取当前存活的所有Activity列表
FoxActivity与FoxFragment
为方便开发,该框架提供了FoxActivity与FoxFragment作为基类(以下统称基类),并提供了一些常用方法。下面介绍它们的一些方法
继承
基类在各自的onCreate()
与onCreateView()
内进行了一些部署,并将这两个方法修饰为final。原本在该方法中进行的Layout绑定与部署将分别在三个独立的方法onSetLayoutResource(int layoutId)
、onSetLayoutView(View view)
与create(Bundle savedInstance)
中进行。
layout资源文件请重写onSetLayoutResource(int)
并返回layout资源id;layout实例请重写onSetLayoutView(View)
并返回View
实例。原本的初始化代码请于create(Bundle)
中进行。
双击检测
基类提供了checkCallAgain(long timeout, int id)
用于检验该方法在规定时间内是否被调用两次。其中第一个参数为两次点击的间隔。第二个参数为判断检测事件的id,默认为-1
示例如下
/**
* 利用 {@link FoxActivity#checkCallAgain(int)} 实现二次返回键退出功能
*/
@Override
public void onBackPressed() {
if (checkCallAgain(2000)){
// 上面的方法,第一次调用时返回false。参数接受一个长整型&#