您的位置:首页 > 移动开发 > Android开发

Android 近期知识总结

2017-10-04 03:32 225 查看
前言:要学习的东西还很多啊。这是近期的一些

1 开发的辅助知识

Gradle知识

看看stormzhang的相关博客。

混淆编译:

入门到精通 http://www.jianshu.com/p/7436a1a32891

http://www.jianshu.com/p/44e3b127393e

第三方库的导入和导出

http://www.csdn.net/article/1970-01-01/2824100

http://www.cnblogs.com/xxdh/p/6703746.html

JNI相关知识

http://www.jianshu.com/p/aba734d5b5cd

android代码规范:

http://www.jianshu.com/p/0a984f999592

注解的介绍:

http://www.cnblogs.com/punkisnotdead/p/4705258.html

Butter Knife 框架:

http://www.jianshu.com/p/9ad21e548b69

一些注解说明:

http://www.mamicode.com/info-detail-1892879.html

api = Build.VERSION_CODES.LOLLIPOP的理解

注释的介绍:

注释简介 http://www.jianshu.com/p/54e8964730b4

注释规范 http://blog.csdn.net/u011123714/article/details/45847169

此外可以看看《Java核心技术》的讲解

注释模板 http://www.cnblogs.com/linfenghp/p/5561639.html

注释模板 http://blog.csdn.net/zuiwuyuan/article/details/48201185

注释生成的方法:

1-方法注释:你在方法前输入/**然后一回车,自动帮你生成方法和参数的注释。

2-类注释:类注释可以自定义模板。

3-变量注释-大神们似乎都喜欢用文档注释方式,即在变量声明的上一行注释。做法同“方法注释”。

生成注释文档

http://blog.csdn.net/qq_28685759/article/details/69390125

一些快捷键的使用

异常处理:

比如什么情况下需要throw一个异常,什么时候需要捕捉异常(try……catch……语句)。

1-当你调用的接口在文档里明确表示可能有异常(如网络接口),你需要处理异常。有时候异常可以在回调参数里取得(如okhttp的onFailure方法),这时就不需要再写catch语句(底层已经帮你实现了catch),只需要编写捕捉到这个异常后的逻辑。可以比较一下httpURLConnection和okhttp的异常处理的区别。

2-自己写的逻辑,如果可能有异常,也需要做异常处理。尤其是读写、数据库交互之类的容易出现异常。

3-解读异常。查询官方文档可知Exception的构造由Message和Cause组成,可以通过getMessage和getCause来获取异常的原始情况(信息和原因)(这两个方法继承自Throwable类)。另外,可通过printStackTrace打印异常经过的路径。

4-断言的使用。暂时不用

日志:

采用android日志工具(Log)。

分为5个等级。养成良好的使用习惯。

快捷键:logv再tab可以生成v级别完整语句,其他4个类推。技巧,在onCreate外面输入logt再tab可以生成TAG常量。

可以使用自定义过滤器和等级过滤。

《第一行代码》说的自定义日志工具,可以在代码上线后屏蔽日志。我这种小软件就不需要了,而且自定义后不能使用快捷键。

调试:

《第一行代码》里的调试方法先用着,差不多够用了。

debug和release的深入:以后有时间看看。

2 基础知识

基础知识补全,如menu、SpannableString、如viewpager、TextView的textIsSelectable属性的使用等。

menu的知识:

http://www.cnblogs.com/smyhvae/p/4133292.html

关于ActionBar和ToolBar的一些知识,可以参考《第一行代码》,比如提到了HomeAsUp按钮。又比如为什么填充Menu时,设置为“showasaction=always”的会填充在右边,这些填充规则是什么。

SpannableString介绍:

http://www.jianshu.com/p/84067ad289d2

http://blog.csdn.net/u013309870/article/details/52830634

viewpager介绍:

http://www.jianshu.com/p/3f9cc4beb0ae

TextView的textIsSelectable属性:

http://blog.csdn.net/qq_33689414/article/details/52885651

alertDialog.builder和DialogInterface的知识:从ys破解过程中学到的。

可以参考这个系列:http://blog.csdn.net/harvic880925/article/details/42528663

service更新UI的方法:

handler法:http://blog.csdn.net/jycboy/article/details/46040189

广播法:http://www.jianshu.com/p/a274e17fc66a?winzoom=1这个项目就是用的广播法。

(子线程中更新UI的一种方法:使用广播。如小米手环程序的notifyUI)

context、activity、application、view之间的关系。

一些控件之间的继承关系,如Button与view的关系、与TextView的关系。

xml文件和class文件之间怎么串起来、布局和活动怎样的联系机制。

java的SDK与android的SDK有什么关系

设置透明度,颜色写成8为,前两位表示透明度。

动态注册广播的方法。要复习下啊。

使用application全局变量 与 本地文件 存储信息 的区别:

前者在进程被杀掉后,变量就没了。

SharedPreference在多进程中数据共享出了问题。commit和apply有区别!

又由于多进程不共享内存。但是Mode_MULT_Proccess还是可以用的,只是官方不推荐。

StopSelf 的执行方式:onStartcommand执行完才结束。

Get 和post 的区别。

https://www.zhihu.com/question/31640769

http://www.techweb.com.cn/network/system/2016-10-11/2407736.shtml

http://blog.csdn.net/fg313071405/article/details/42150227

看看RESTful原则(是一种风格,而不是标准)

地图数据:一般接口都是 先维度 后经度!!!!!

内部类里面使用外部类的变量,要将外部类变量声明为final (搞清为什么)

arrayList 要好好搞搞,size为0时,不能用size判断,直接判断此list是否为空。

AsyncTask的线程数、停止方法。

终止线程的方法,尤其是线程阻塞时。

http://www.cnblogs.com/luckygxf/p/4737655.html

自启动:

http://blog.csdn.net/u012400885/article/details/65515941

蓝牙编程:

http://www.jianshu.com/p/29a730795294

http://www.jianshu.com/p/a274e17fc66a?winzoom=1

以及对应的github项目。注意要开启位置服务,才能扫描到设备。这个坑真是浪费了我好多时间。权限真是个麻烦的事情,我用service实现这一套,竟然还要手动去将权限改为全部允许,搞得我程序一直莫名扫描不到蓝牙设备。哭死,在这里又耽误了3个小时。以后还是写个权限申请吧。

http://blog.csdn.net/vnanyesheshou/article/details/51554852

http://www.cnblogs.com/gooder2-android/p/6513799.html

系统蓝牙中取消配对(蓝牙配对的知识)。

ble要求最低API版本为18,我原先默认都是15,改一下了。

Android 6 以上的必须先打开定位,否则扫描不到。(在这里耽误了4小时)

开发时手环一直闪光,且手机扫描不到(B2手环开发遇到的问题)。

mBleManager.setScanListener遇到的问题(B2手环开发遇到的问题)。

权限申请:

http://www.jianshu.com/p/a51593817825

RxJava编程

http://gank.io/post/560e15be2dca930e00da1083

3 其他

android架构设计:

如MVP设计模式等等。在大型程序中,有必要学习一下。现在没时间,暂时先不看。架构这种东西,小项目反而会增加代码量,增加一些回调、监听之类的。

http://blog.csdn.net/ghost_programmer/article/details/49994761

http://www.cnblogs.com/pangguoming/p/5882630.html

http://www.jianshu.com/p/2ca7767df08c

http://blog.csdn.net/dfskhgalshgkajghljgh/article/details/51646250

反编译系列

smali2dex

下载:https://bitbucket.org/JesusFreke/smali/downloads/

参考方法:http://blog.csdn.net/wolinghuanyun/article/details/52516346

开始用新版本2.2.0的失败了(可能是java不兼容),后来用了2.1.3版成功了。命令:java -jar smali-2.1.3.jar -o 目标dex文件 [smali文件夹]

举例:将目录切换到一个文件夹,这里包含有smali-2.1.3.jar、由smali文件夹,然后执行: java -jar smali-2.1.3.jar -o classes0.dex smali

当然,也可以直接用目录指定来执行(指定smali.jar的路径、指定smali文件路径、指定输出文件路径)。

一个新工具:

https://github.com/linchaolong/ApkToolPlus

其他参考:

http://www.aichengxu.com/java/9755804.htm

multiDex系列:【Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’解决记录】

这个博客讲了一些,挺好,应该可行。

http://dditblog.com/itshare_590.html

但我的程序运行时还是挂了。最终我还是通过提取反编译技术,将jar包里重复的库删除,重新建立jar包。所以避免了这个错误。

Coolweather在gradle时报错

Error:Failed to resolve: com.android.support:support-annotations:26.0.2

且点击Install Repository and sync project无效

网上找到一个人说:在项目的build.gradle里面最上层填写这样一句话

configurations.all {

resolutionStrategy.force ‘com.android.support:support-annotations:23.1.0’

}

感谢:

http://blog.csdn.net/pyfysf/article/details/77894331?locationNum=3&fps=1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android