最新的一版,通用Android-客户端架构设计,只有你还没看过

###日志系统
日志系统要完成以下几个功能:

1、Debug时的日志需求
2、日志写入文件的需求,方便上线查看
3、日志上报
4、日志加密

系统日志监控:日志奔溃信息监控
修改医行者中的日志系统可以达到需求, 也可以修改Github开源项目格式化日志输出项目: Logger 和 日志收集项目:Log 达到要求。

网络系统
Gitbub: OkHttphttps://github.com/square/okhttp

OkHttp封装:HttpGet、HttpPost、File Upload,OKHttp的使用要求创建Request,填写RequestBody。参照医行者Messaage的封装形式,将创建Request的过程进行封装,由最简单的请求信息和回调接口构成一个Message,并对Message进行统一处理。

本地存储

本地存储要解决的问题:

1、数据库存储

2、数据库的版本管理:版本升级、数据迁移等

参考:Hibernate的ORM思想

第三方框架:

GreenDAO
Android Sqlite orm 的 db 工具类

项目地址:https://github.com/greenrobot/greenDAO

文档介绍:http://greendao-orm.com/documentation/

官网网址:http://greendao-orm.com/

GreenDao使用方式

创建 “Green Dao Generation Project” 来生成 entities and core classes( DaoMaster, DaoSession .etc);
在Android Project中使用生成的Dao,

GreenDao生成:

public static void main(String[] args) throws Exception {、

// 这两个参数是:数据库版本号和schema名称

Schema schema = new Schema(1000, “de.greenrobot.daoexample”);

addNote(schema);

//addCustomerOrder(schema);

// 生成类,同时可以指定java文件位置

new DaoGenerator().generateAll(schema, “…/DaoExample/src/main/java”);

}

private static void addNote(Schema schema) {

Entity note = schema.addEntity(“Note”);

note.addIdProperty();

note.addStringProperty(“text”).notNull();

note.addStringProperty(“comment”);

note.addDateProperty(“date”);

}

针对版本升级的问题,GreenDao也有合适的解决方式:
数据库版本升级问题:

public DevOpenHelper(Context context, String name, CursorFactory factory) {

super(context, name, factory);

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

Log.i(“greenDAO”, “Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables”);

//dropAllTables(db, true);

//onCreate(db);

// to do update database

Android Project和Java Generate整合可参考: 整合 http://www.open-open.com/lib/view/open1438065400878.html

以上是从官方文档上大致看下来的结果,该开源项目在业界评价甚高,使用的人也不在少数。

####Test模块
Android单元测试

robolectric
项目地址:https://github.com/robolectric/robolectricDemo 地址:https://github.com/robolectric/robolectricsample文档介绍:http://robolectric.org/

特点:(1). 不需要模拟器在一般 JVM 就可以运行测试用例(该框架在Java层实现了一套接口模拟Android,所以可以直接在JVM上跑Android Unit Test)

(2). 能完成在真机上的大部分测试包括感应器

其他的测试用例及相关模块 Mock 可见:android-mock, mockito, easy-mock

####robolectric

举个例子:

Andorid中的代码

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

TextView textView = (TextView)findViewById(R.id.textView1);

textView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(MainActivity.this, SecondActivity.class));
}

});
}

对应的测试类,MainActivityTest的代码:

@RunWith(RobolectricGradleTestRunner.class)

@Config(constants = BuildConfig.class, sdk = 21)

@Test

public void testMainActivity() {

MainActivity mainActivity = Robolectric.setupActivity(MainActivity.class);

mainActivity.findViewById(R.id.textView1).performClick();

Intent expectedIntent = new Intent(mainActivity, SecondActivity.class);

ShadowActivity shadowActivity = Shadows.shadowOf(mainActivity);
iew1).performClick();

Intent expectedIntent = new Intent(mainActivity, SecondActivity.class);

ShadowActivity shadowActivity = Shadows.shadowOf(mainActivity);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值