从头开始,手写android应用框架(一)

科技资讯 投稿 24100 0 评论

从头开始,手写android应用框架(一)

前言

搭建android项目框架前,我们需要先定义要框架的结构,因为android框架本身的结构就很复杂,如果一开始没定义好结构,那么后续的使用就会事倍功半。

结构如下:

com.kiba.framework

——activity 存储所有的活动

——base 存储baseActivity

——fragment存储所有的Fragment

——base 存储baseFragment

——service存储所有的service

——utils存储所有的工具类

——dto存储所有的传入传出实体

——model存储所有的实体类

——model_db存储所有的数据库实体类(框架使用ormlit)

创建项目

我们先创建一个项目,File—New—New Project,选择BasicActivity。

然后创建一个utils文件夹。

添加LogUtils,DateUtils,DecimalUtil文件,就是简单的日志输出,日期,字符串工具。(写法很多,可以上网任意搜索)。

然后创建一个异常捕获文件——CrashExceptionHandler,用于输入未捕获异常日志(写法很多,可以上网任意搜索)。

然后打开app下的gradle,引入我们常用的包。

网络请求:okhttp。

json处理:gson和fastjson。

黄油刀注解:ButterKnife。

内置数据库管理:ormlite。

权限请求:rxpermissions。

图片处理:glide。

代码如下:

//okhttp implementation "com.squareup.okhttp3:okhttp:4.9.0" //gson implementation 'com.google.code.gson:gson:2.8.6' //fastjson implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.83' //解决超过65546代码的问题 implementation 'com.android.support:multidex:1.0.2' implementation "com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4" //ButterKnife implementation 'com.jakewharton:butterknife:10.2.3' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' // 数据库ormlite implementation 'com.j256.ormlite:ormlite-android:5.0' implementation 'com.j256.ormlite:ormlite-core:5.0' //权限请求rxpermissions implementation 'com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar' //图片处理glide implementation 'com.github.bumptech.glide:glide:4.14.2' annotationProcessor 'com.github.bumptech.glide:compiler:4.14.2'//运行时 编译时 处理注解

然后在添加一些json和http的utils(写法很多,可以上网任意搜索)。

然后创建MyApplication的java文件,代码如下:

public class MyApplication extends Application {
 
    public static Context context;//全局上下文
    public static List<Activity> activityList = new ArrayList<Activity>(;//用于存放所有启动的Activity的集合
    public static ApplicationInfo applicationInfo;
​
    @Override
    public void onCreate( {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss";
        Log.d("项目启动", "项目启动: " + DateUtils.getTime(;
        super.onCreate(;
​
        context = getApplicationContext(;
​
        PackageManager packageManager = getApplicationContext(.getPackageManager(;
        try {
            packageManager = getApplicationContext(.getPackageManager(;
            applicationInfo = packageManager.getApplicationInfo(getPackageName(, 0;
        } catch (PackageManager.NameNotFoundException e {
            applicationInfo = null;
            LogUtils.LogHelperError("获取applicationInfo报错", e;
        }
​
        CrashExceptionHandler.getInstance(.init(this;
​
        //解决4.x运行崩溃的问题
        MultiDex.install(this;
​
    }
​
    private boolean isDebug( {
        return BuildConfig.DEBUG;
    }
    public static String GetProperties(String propertyName {
        Properties props = new Properties(;
        String serviceUrl = 

编程笔记 » 从头开始,手写android应用框架(一)

赞同 (120) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽