AndFix使用介绍

介绍

AndFix,全称是Android hot-fix。是阿里开源的一个Android热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 6.0。

使用方式

  1. 首先添加依赖
    compile 'com.alipay.euler:andfix:0.3.1@aar'
  2. 然后在Application.onCreate() 中添加以下代码
    1
    2
    3
    patchManager = new PatchManager(context);
    patchManager.init(appversion);//current version
    patchManager.loadPatch();

可以用这句话获取appversion
String appversion= getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
注意每次appversion变更都会导致所有补丁被删除,如果appversion没有改变,则会加载已经保存的所有补丁。

Android开发艺术探索读书笔记 第四章 view的工作原理

4.1

ViewRoot对应于ViewRootImpl类,是连接WindowManager和DecorView的纽带。View的三大流程都是通过ViewRoot来完成的。在ActivityThread中,当activity被创建完毕,会将DecorView添加到Window中,同时
会创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView关联。

View的绘制流程从ViewRoot的performTraversals开始,依次调用performMeasure、performLayout、performDraw。。

DecorView有一个子元素LinearLayout,里面是titleBar和content,这两个都是FrameLayout。

Android开发艺术探索读书笔记 第三章 view的事件体系

3.1.2 View的位置参数

x = left + translationX
y = top + translationY
在平移过程中,top和left表示原始左上角的位置信息,值不变。x,y,translationX和translationY改变。

  • getX/getY返回相对于当前view左上角的坐标
  • getRawX/getRawY返回相对于屏幕左上角的坐标

3.1.3

TouchSlop是系统所能识别出的最小滑动距离,通过ViewConfiguration.get(getContext()).getScaledTouchSlop()获得

《Android开发艺术探索》读书笔记 第二章 IPC机制

2.2.1

  • 使用多进程可以在AndroidManifest中通过设置android:process属性,或者在jni中fork一个进程
    进程名 :remote :的含义是指在前面附加包名,并且属于私有进程。其他应用的组件不能和它在同一个进程。
    不以:开头的进程可以通过SharedUID跑在同一个进程,但是要求两个应用签名相同。同一进程可以相互访问私有数据。

  • adb shell ps| grep xxx 获取包含字符串的进程

2.2.2

多进程带来的问题

  1. 静态成员和单例模式失效
  2. 线程同步机制失效
  3. SharedPreference可靠性下降(sp不支持两个进程同时读写)
  4. Application会创建多次

跨进程通信的方式

  • intent
  • 共享文件和sharedPreference
  • 基于Binder的Messenger和AIDL
  • Socket
  • ContentProvider

《Android开发艺术探索》读书笔记 第一章 生命周期与启动模式

最近在读任主席的《Android开发艺术探索》,做一点笔记,防止以后忘掉。并不只是书上的内容,还有一些自己的补充。

1.1.1 典型情况生命周期分析

  • onStart、onResume与onPause、onStop有什么实质不同?
    onStart、onStop是从是否可见来描述,onResume和onPause是从是否可与用户交互的角度。

  • 在启动新activity时,先执行旧activity的onPause,然后再是新activiy的onCreate,onStart,onResume。

  • 如果新的activity是透明的,那么原activity不会执行onStop。(没有变成不可见)

  • 设置activity透明的方法

    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    

1.1.2 异常情况生命周期

  • 系统在activity异常终止的时候会调用onSaveInstanceState存储数据,onRestoreInstanceState恢复数据。

  • 按Home或启动新activity也会触发onSaveInstanceState。

  • 内存不足时杀死进程会触发onSaveInstanceState、onRestoreInstanceState

  • 转屏时触发onSaveInstanceState,如果要转屏时不触发,需要设置android:configChanges=”orientation”
    如果是api>=13,需设置android:configChanges=”orientation|screenSize”,
    设置后转屏时回调 onConfigurationChanged

stetho使用介绍

#介绍
stetho是facebook开发的Android调试工具。它可以通过chrome的开发者工具来辅助安卓开发。
总的来说,提供了一下几个功能:

  • 通过Elements标签查看界面的视图结构。
  • 通过Network标签观察网络请求。
  • 通过Resources标签查看本地数据,比如sqlite数据库,sharepreference等等。同时可以在这里执行sql语句。
  • 通过Console标签,在这里执行js语句,可以在APP上弹出一个Toast。
  • dumpapp 是linux/mac上使用的命令行工具,可以修改app内部资源,暂时未详细了解。

使用python完成重复任务

事件背景:
接到一个任务,要我完成对很多文件改名字的操作。
任务原因是美工切过来的图片都是中文名,于是有人把xhdpi文件夹中的文件改成了英文名,
本来这也没什么问题,因为刚开始就说好只用xhdpi的内容,其他不需要放。
我问 “为什么会需要其他几个dpi的文件,Android不是会自动进行等比缩放的吗?”
答: “以后可能需要。”
好吧..

于是我又跟他说,android studio的重命名快捷键也可以对图片操作的,先把中文名的图片导入,
接着只要改了其中一个dpi的文件名,其他dpi也会自动改过来。
然而现在已经是一个dpi变了而其他的并没有变成英文的。最终这个重复劳动还是让我来做了,
以后新加的图片会考虑用我说的方法。

然后开始思考有没有方便的方法,一个个手动重命名实在太蠢了。
想到了两个方法:

  1. 还是利用android studio的快捷键,找到中英文对应的图片,然后用快捷键把中文名改成英文名。
  2. 找到中英文的映射关系记录到一个字典里,然后用脚本实现批量重命名。
,