结尾
最后,针对上面谈的内容,给大家推荐一个Android资料,应该对大家有用。
首先是一个知识清单:(对于现在的Android及移动互联网来说,我们需要掌握的技术)
泛型原理丶反射原理丶Java虚拟机原理丶线程池原理丶
注解原理丶注解原理丶序列化
Activity知识体系(Activity的生命周期丶Activity的任务栈丶Activity的启动模式丶View源码丶Fragment内核相关丶service原理等)
代码框架结构优化(数据结构丶排序算法丶设计模式)
APP性能优化(用户体验优化丶适配丶代码调优)
热修复丶热升级丶Hook技术丶IOC架构设计
NDK(c编程丶C++丶JNI丶LINUX)
如何提高开发效率?
MVC丶MVP丶MVVM
微信小程序
Hybrid
Flutter
接下来是资料清单:(敲黑板!!!)
1.数据结构和算法
2.设计模式
3.全套体系化高级架构视频;七大主流技术模块,视频+源码+笔记
4.面试专题资料包(怎么能少了一份全面的面试题总结呢~)
不论遇到什么困难,都不应该成为我们放弃的理由!共勉~
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
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);
Intent actualIntent = shadowActivity.getNextStartedActivity();
Assert.assertEquals(expectedIntent, actualIntent);
}
使用方式http://segmentfault.com/a/1190000002904944
robolectric-demohttps://github.com/ChrisZou/robolectric-demo
####Monkey
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中,基于adb shell命令还控制程序包进行测试。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。Monkey测试对象是应用程序包。
Monkey测试的步骤:1、#adb shell2、#monkey -p com.android.calculator2 -v 500 (-p packageName -v LogLevel 500即伪随机事件个数)
更多地命令组合和参数可以查看:Google Monkey官网:http://developer.android.com/tools/help/monkey.htmlAndroid-Monkey-Test:http://ihongqiqu.com/2015/12/24/Android-Monkey-Test/
####第三方测试工具
Tencent APT
APT 是腾讯开源的一个 Android 平台高效性能测试组件,提供丰富实用的功能,适用于开发自测、定位性能瓶颈;测试人员完成性能基准测试、竞品对比测试
项目地址:https://github.com/stormzhang/APT
文章不易,如果大家喜欢这篇文章,或者对你有帮助希望大家多多点赞转发关注哦。文章会持续更新的。绝对干货!!!
学习路线+知识梳理
花了很长时间,就为了整理这张详细的知识路线脑图。当然由于时间有限、能力也都有限,毕竟嵌入式全体系实在太庞大了,包括我那做嵌入式的同学,也不可能什么都懂,有些东西可能没覆盖到,不足之处,还希望小伙伴们一起交流补充,一起完善进步。
这次就分享到这里吧,下篇见。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!