记录开发

记录平常开发中的小问题:

   1.使用tool设置textview的默认文本,这样在编译之后,默认的textview中的text会自动隐藏,在调试的时候可以很方便的进行UI调整。

   2.在xml中尽量使用ConstraintLayout进行外层布局,这样在绘制UI的过程中,可以省去很多复杂的布局消耗。

android.support.constraint.ConstraintLayout 

   3.使用Retrofit时,GET请求需要添加注解@GET,传入参数使用注解@Query。但是使用POST请求时,需要给添加@POST、@FormUrlEncoded这两个注解,传入参数使用注解@Field。如果请求报错为405,一般要检查请求是GET请求还是POST请求。

  4.关于kotlin字符串的简单操作,截取kotlin中指定的字符串,类似话题、口令等字符串,val content = paste.substringAfter("#").substringBefore("#") ,只需要调用substringAfter和substringBefore两个方法,这样就能截取字符串中想要截取的特殊字符串了。判断是否包含某个特殊字符,使用contains方法进行判断。

    5.在Manifest中配置application的meta-data,当用360加固时,并不会生效,只有在外面声明才会有效。

<meta-data
    android:name="UMENG_CHANNEL"
    android:value="${channelID}" />

    6.在请求网络过程中,一定要小心异步线程问题,因为所有请求网络都是在异步线程中执行,很多时候在请求网络回来之后要进行UI刷新,如果这时候当前activity或者fragment销毁了,就会导致崩溃。所以一般情况下可以通过绑定activity的生命周期进行控制,通过下面这个方法对生命周期进行绑定,同时在请求的结果中,判断当前activity是否为空,如果为空,直接返回。

AndroidLifecycle.createLifecycleProvider(this).bindToLifecycle()
fun <T> Observable<T>.bindToLifecycle(owner: LifecycleOwner?): Observable<T> {
    if (owner == null) return this
    return this.compose(AndroidLifecycle.createLifecycleProvider(owner).bindToLifecycle())
}

当然,在kotlin代码中,可以将这个方法写成扩展函数,这样以便于管理及将来的扩展。

    7.注意fragment加载过程中,如果是在activity中加载fragment,需要调用getFragmentManger()方法,这时拿到的当前activity中加载fragment的manger。如果是在fragment中加载fragment,那就需要调用getChildFragmentManger()方法了,这时拿到的是当前fragmeng上面的manger。如果在fragment中加载fragment,并且在fragment中调用getFragmentManger()方法,那么拿到的是activity上面的,并不是当前fragment的。

    8.对于@SuppressLint()这个注解的使用,一定要注意当前可以肯定没有问题才能用,因为这个注解会压制Android studio的警告信息,而这些警告信息是非常有用的,会提示你当前代码中存在的漏洞,如果忽略这些信息,非常有可能导致警告里面出现的很多bug,最常见的就是内存泄漏。

  9.有关友盟分享,当分享到qq空间或者qq时,需要在当前分享的activity的onActivityResult中,添加UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);   否则分享会收不到成功的回调。

    10.kotlin简化语法,最简单的if()else()使用kotlin的三目运算符写出来

if(total != null){
    arg1 = total
}else{
    arg1 = 0
}
arg1 = total ?: 0
    
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页