Mac 安装zsh 发表于 2019-07-27 Bearbeitet am 2023-03-21 分类于 zsh , Mac 一、安装zsh 1、Mac终端默认bash,但其实已经自带zsh,只需运行切换命令,再重新打开终端1chsh -s /bin/zsh 阅读全文 »
Android 架构演进 发表于 2019-07-23 Bearbeitet am 2023-03-21 分类于 Android , 架构 , MVC、MVP、MVVM MVC1、角色 View android.view.View及其子类+布局文件作为view层,负责视图的创建渲染; Controller 通常是Activity/Fragment作为Controller角色,负责视图逻辑、业务流程处理; Model SQLite、IO或网络请求作为model层; 阅读全文 »
Android DataBinding 发表于 2019-07-21 Bearbeitet am 2023-03-21 分类于 Android , MVVM 一、DataBinding 观察者模式,底层基于Observable,通过synchronized实现线程安全; 可用于MVVM架构,实现ViewModel,抽离数据与UI; 不仅仅是MVVM,它可用于任何希望数据与UI抽离解耦的地方,比如: RecyelerView的Holder; 优化Glide加载图片; 虽然解耦,但对xml布局文件有侵入式修改,对布局文件复用有一定的影响,编译器会对相应的标签进行处理成LayoutInflater可识别的形式,所以定义之后代码中也可以不使用; @{}布局中的表达式除了简单判断、转换之外,不应该做复杂的代码实现; 官方关系示例图,MVVM中的DataBinding 阅读全文 »
Android 单例模式 发表于 2019-07-20 Bearbeitet am 2023-03-21 分类于 Android , 设计模式 单例模式一、特点 构造函数私有 通过静态函数获取实例对象 确保任何情况下全局只有一个实例对象 反射、反序列化、克隆也不会生成多个实例 二、定义 阅读全文 »
Mac 双击执行shell 发表于 2019-07-20 Bearbeitet am 2023-03-21 分类于 Mac , Shell 1)创建shell脚本 1vim hello.sh 2)写入命令,并保存 123#!/bin/bashecho 'hello mac shell' 阅读全文 »
Android WebView内存泄漏 发表于 2019-07-16 Bearbeitet am 2023-03-21 分类于 Android , WebView WebView内存泄漏原因webview引起的内存泄漏主要是因为org.chromium.android_webview.AwContents 类中注册了component callbacks,但是未正常反注册而导致的。org.chromium.android_webview.AwContents 类中有这两个方法 onAttachedToWindow 和 onDetachedFromWindow;系统会在attach和detach处进行注册和反注册component callback; 阅读全文 »
Android 数据结构 发表于 2019-07-14 Bearbeitet am 2023-03-21 分类于 Android 一、List接口 特点 继承Collection接口,元素时有序的,具有列表的功能,元素顺序均是按照添加的先后顺序进行排列的,不管访问多少次,元素位置不变; 允许重复的元素,允许多个null元素; 可随机访问包含的元素,可在任意位置上增、删元素; 用Iterator实现单项遍历,也可用Iterator实现双向遍历; 注意:用Iterator进行遍历的时候,不应该调用List、Set、Map等类中的remove()方法删除元素,否则会抛出异常,如果需要在遍历时删除元素,应该使用Iterator.remove()方法; 阅读全文 »
Android 内存优化相关(未完成) 发表于 2019-07-13 Bearbeitet am 2023-03-21 分类于 Android 引用方式强引用(StrongReference) 使用 1Object ojb = new Object(); 特点 直接访问对象,但某些情况可能引起内存泄漏; 当对象被强引用所关联时,JVM不会回收该对象,即使内存不足的情况下,JVM会直接抛出OutOfMemory错误1而不会回收该类对象; 阅读全文 »
Android JS交互方式 发表于 2019-07-13 Bearbeitet am 2023-03-21 分类于 Android 1.通过schema方式,使用shouldOverrideUrlLoading方法对url协议进行解析。这种js的调用方式与ios的一样,使用iframe来调用native代码。 2.通过在webview页面里直接注入原生js代码方式,使用addJavascriptInterface方法来实现。在android里实现如下:1234567class JSInterface { @JavascriptInterface //注意这个代码一定要加上 public String getUserData() { return "UserData"; }}webView.addJavascriptInterface(new JSInterface(), "AndroidJS"); 阅读全文 »