Android 1000问第二弹

254 阅读4分钟
  1. 重写系统Back键,实现自己的逻辑

     /**
      * https://www.jianshu.com/p/d54cd7a724bc
      * Android中在按下back键时会调用到onBackPressed()方法,
      * onBackPressed相对于finish方法,还做了一些其他操作,
      * 而这些操作涉及到Activity的状态,所以调用还是需要谨慎对待。
      */
     override fun onBackPressed() {
         // super.onBackPressed();
         mSharedViewModel.closeSlidePanelIfExpanded.value = true // 触发改变
     }
    
  2. 判断Activity是否展现了,真正呈现给用户了

    • 重写系统回调函数:onResume,这个其实是不行的

    • 要用这个:onWindowFocusChanged

       /**
        * 详情看:https://www.cnblogs.com/lijunamneg/archive/2013/01/19/2867532.html
        * 这个onWindowFocusChanged指的是这个Activity得到或者失去焦点的时候 就会call。。
        * 也就是说 如果你想要做一个Activity一加载完毕,就触发什么的话 完全可以用这个!!!
        *  entry: onStart---->onResume---->onAttachedToWindow----------->onWindowVisibilityChanged--visibility=0---------->onWindowFocusChanged(true)------->
        * @param hasFocus
        */
       override fun onWindowFocusChanged(hasFocus: Boolean) {
           super.onWindowFocusChanged(hasFocus)
           if (!isListened) {
               mSharedViewModel.timeToAddSlideListener.value = true // 触发改变
               isListened = true
           }
       }
      
  3. 防止抖动:界面持续更新,例如下载的进度条

    • 虽然没有加载图片,但是还是会有内存开销较大的问题
    • 结论:当界面更新十分频繁时用Observable(不能观察生命周期)不用LiveData
    • 节约运行内存
    • 因为LiveData开销很大
    • Observable是属于DataBinding的,这个东西比LiveData出现早,优化历史长
    • DataBinding 与LiveData功能差不多
  4. MVP 的缺点

    • 概述:View层访问P层,P层通过服务器拿到模型数据,通过接口回调的方式返给View层
    • 问题:接口地狱
  5. DataBinding出现问题:

    • 错误排查:一般都是布局写错了
    • 报错类型:一般都是类生成错误
  6. 处理Android Studio异常信息乱码:

    • 在VCS中进行配置就行了
  7. 清除Android Stuido缓存:

    1. 删掉build文件夹,
    2. 也可以点那个大象,然后clean一下
  8. 项目中右边侧边栏一直在Analazying:

    Android ButterKnife Zelezny插件和android studio 4.X版本不兼容,禁用掉就可以了:www.jianshu.com/p/79ced5c3b…

    修改kotlin插件版本,以及gradle版本即可

    image-20220105200636753

  1. 解决source insight 代码跳转时出现 symbol not found 解决办法:blog.csdn.net/qq_39687342…

  2. 这个工具怎么显示行号?www.baidu.com/baidu?tn=mo…

  3. 异常处理

    • 异常描述:

      image-20220218230115098

    • 解决办法:重启AS或者点一下那个大象

  1. Android Studio修改虚拟机内存大小

    • help--->Edit Custom VM Options

image-20220219203535851

  • 也可以在这里改

    image-20220219204114344

  1. Android Studio的JDK在哪里

image-20220219204341501

  1. 异常处理:

    • 异常描述:Could not set process working directory to ‘ ‘: could not set current directory (errno 3)
    • 解决办法:可以点一下那个大象或者Reload一下

image-20220220155408981

  1. 在使用Retrofit配合Kotlin实现登录功能的时候,会有一些问题

    • 线程切换与setValue

    • 一般情况下,都是仓库层返回一个Data,拿给ViewModel实现数据驱动UI更新;但是用了协程就要注意三个点

      • 作用域的问题:看他现在在哪个线程里面
      • 因为接口层里面定义的登录标准时是被suspend进行包裹了的,那么仓库层的调用者也要被suspend包裹(解决颜色问题)
      • 因为这个仓库层,实际上是一个伪挂起,在调用了之后,它会进行一次线程的转换,最终会切回主线程
  1. 异常处理:

    • 异常描述:Execution failed for task ':app:kaptDebugKotlin'.
    • 问题解决:修改kotlin版本,但是这个效果不好,可能会触发新的异常

image-20220220181516281

  1. 使用Android Studio单独编译java程序

    • file--->new--->Moudle-->选择java,等待就可
  2. Android Studio在运行框内,仅查看运行结果

  3. 怎么取出图片中的颜色的十六进制代码

    • 借助PS,用哪个吸管就行了
  4. 如何制作应用图标

    1. 选择合适的图片,放到电脑某个位置(待会要使用这个路径)

    2. file--->new--->Image Asset

    3. 选中前景(ForegroundLayer)

    4. 选择图片,调整下面的进度条,保证图片都在安全区域内即可

      细节:

      1. 不要去改那个名字(ic_luancher),新生成的应用图标会对其进行覆盖的
      2. 图标是以xml形式存放在这mipmap目录下的,这个会自己适配(mask是手机厂商的事情)
      3. 可能会报错,原因就是在清单文件中应已经指定了icon,改一下就行了
  5. 如何使用gitee上传文件夹