Android 近期知识总结

前言:要学习的东西还很多啊。这是近期的一些
###1 开发的辅助知识
Gradle知识
看看stormzhang的相关博客。

Linux系统搭建Android Studio,需要提前安装JDK 之类的(Windows的android studio不需要,但是eclipse等也需要)。

Android开发的版本库管理,git往往是不够用的,需要repo,关于repo的介绍,可参考:https://blog.csdn.net/qugename/article/details/57463951
git管理单独的模块,而repo管理所有的git库,将多个git库组合在一起,形成一个完整的大版本。

第三方库的导入和导出
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中所谓的native method其实就是指JNI中的method。

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原则(是一种风格,而不是标准)

cookie的使用
https://blog.csdn.net/qq_33200967/article/details/71789740
也可参照如下代码.
获取服务器返回的cookie,需使用:cookie = response.header(“Set-Cookie”);

OkHttpClient client = new OkHttpClient();
try {
       Response response = client.newCall(request).execute();
       responseData = response.body().string();
       try{
           cookie = response.header("Set-Cookie");
       } catch (Exception e){
           cookie = "";
       }
       done = true;
     } catch (Exception e){
       e.printStackTrace();
     }

设置cookie:需添加 .addHeader(“cookie”,cookie)

        RequestBody requestBody = new FormBody.Builder()
                .add("uid",uID)
                .add("pwd",pwd)
                .add("newpwd",newpwd)
                .build();
        Request request = new Request.Builder()
                .url(formatURL("reset-pwd"))
                .post(requestBody)
                .addHeader("cookie",cookie)
                .build();
        final HttpTask s = new HttpTask(listener,request,true);

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

内部类里面使用外部类的变量,要将外部类变量声明为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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FarmerJohn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值