_yifan

Coder

一、安装zsh

  • 1、Mac终端默认bash,但其实已经自带zsh,只需运行切换命令,再重新打开终端
1
chsh -s /bin/zsh
阅读全文 »

MVC

1、角色

  • View
  • android.view.View及其子类+布局文件作为view层,负责视图的创建渲染;
  • Controller
  • 通常是Activity/Fragment作为Controller角色,负责视图逻辑、业务流程处理;
  • Model
  • SQLite、IO或网络请求作为model层;
阅读全文 »

一、DataBinding

  • 观察者模式,底层基于Observable,通过synchronized实现线程安全;
  • 可用于MVVM架构,实现ViewModel,抽离数据与UI;
  • 不仅仅是MVVM,它可用于任何希望数据与UI抽离解耦的地方,比如:
  • RecyelerView的Holder;
  • 优化Glide加载图片;
  • 虽然解耦,但对xml布局文件有侵入式修改,对布局文件复用有一定的影响,编译器会对相应的标签进行处理成LayoutInflater可识别的形式,所以定义之后代码中也可以不使用;
  • @{}布局中的表达式除了简单判断、转换之外,不应该做复杂的代码实现;
  • 官方关系示例图,MVVM中的DataBinding
    DataBinding实现MVVM
阅读全文 »

单例模式

一、特点

  • 构造函数私有
  • 通过静态函数获取实例对象
  • 确保任何情况下全局只有一个实例对象
  • 反射、反序列化、克隆也不会生成多个实例

二、定义

阅读全文 »

WebView内存泄漏

原因

webview引起的内存泄漏主要是因为org.chromium.android_webview.AwContents 类中注册了component callbacks,但是未正常反注册而导致的。
org.chromium.android_webview.AwContents 类中有这两个方法 onAttachedToWindow 和 onDetachedFromWindow;系统会在attach和detach处进行注册和反注册component callback;

阅读全文 »

image.png

一、List接口

  • 特点
  • 继承Collection接口,元素时有序的,具有列表的功能,元素顺序均是按照添加的先后顺序进行排列的,不管访问多少次,元素位置不变;
  • 允许重复的元素,允许多个null元素;
  • 可随机访问包含的元素,可在任意位置上增、删元素;
  • Iterator实现单项遍历,也可用Iterator实现双向遍历;

    注意:用Iterator进行遍历的时候,不应该调用List、Set、Map等类中的remove()方法删除元素,否则会抛出异常,如果需要在遍历时删除元素,应该使用Iterator.remove()方法;

阅读全文 »

引用方式

强引用(StrongReference)

  • 使用
1
Object ojb = new Object();
  • 特点
  • 直接访问对象,但某些情况可能引起内存泄漏;
  • 当对象被强引用所关联时,JVM不会回收该对象,即使内存不足的情况下,JVM会直接抛出OutOfMemory错误1而不会回收该类对象;
阅读全文 »

  • 1.通过schema方式,使用shouldOverrideUrlLoading方法对url协议进行解析。这种js的调用方式与ios的一样,使用iframe来调用native代码。
  • 2.通过在webview页面里直接注入原生js代码方式,使用addJavascriptInterface方法来实现。
    在android里实现如下:
1
2
3
4
5
6
7
class JSInterface {
@JavascriptInterface //注意这个代码一定要加上
public String getUserData() {
return "UserData";
}
}
webView.addJavascriptInterface(new JSInterface(), "AndroidJS");
阅读全文 »
0%