Png优化
APK打包会自动对PNG进行无损压缩,如果自行无损压缩是无效的。
当然进行有损压缩是可以的:https://tinypng.com/
Tcpdump抓包
有些模拟器比如genymotion自带了tcpdump,如果没有的话,需要下载tcpdump:
http://www.strazzere.com/android/tcpdump
把tcpdump push到/data/local下,抓包命令:
adb shell /data/local/tcpdump -i any -p -s 0 -w /sdcard/capture.pcap
查看签名
很多开发者服务都需要绑定签名信息,用下面的命令可以查看签名:
keytool -list -v -keystore release.jks
ListView的局部刷新
有的列表可能notifyDataSetChanged()代价有点高,最好能局部刷新。
强调一下,最后那个列表数据别忘记更新, 不然数据源不变,一滚动可能又还原了。
局部刷新的重点是,找到要更新的那项的View,然后再根据业务逻辑更新数据即可。
private void updateItem(int index) {
int visiblePosition = listView.getFirstVisiblePosition();
if (index - visiblePosition >= 0) {
//得到要更新的item的view
View view = listView.getChildAt(index - visiblePosition);
}
}
系统日志中几个重要的TAG
// 查看Activity跳转
adb logcat -v time | grep ActivityManager
// 查看崩溃信息
adb logcat -v time | grep AndroidRuntime
// 查看Dalvik信息,比如GC
adb logcat -v time | grep "D\/Dalvik"
// 查看art信息,比如GC
adb logcat -v time | grep "I\/art"
一行居中,多行居左的TextView
这个一般用于提示信息对话框,如果文字是一行就居中,多行就居左。
在TextView外套一层wrap_content的ViewGroup即可简单实现:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 套一层wrap_content的ViewGroup -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</LinearLayout>
</RelativeLayout>
JAVA引用类型一览表
对象引用:强引用 > 软引用 > 弱引用 > 虚引用。
引用类型 回收时机 用途 生存时间
强引用 从来不会 对象的一般状态 JVM停止运行时终止
软引用 在内存不足时 对象缓存 内存不足时终止
弱引用 在垃圾回收时 对象缓存 GC运行后终止
虚引用 在垃圾回收时 对象跟踪 GC运行后终止
Context使用场景
为了防止Activity,Service等这样的Context泄漏于一些生命周期更长的对象,可以使用生命周期更长的ApplicationContext,但是不是所有的Context的都能替换为ApplicationContext
这是网上流传的一份表格:
Application Activity Service ContentProvider BroadcastReceiver
Show Dialog 否 是 否 否 否
Start Activity 否 是 否 否 否
Layout Inflation 否 是 否 否 否
Start Service 是 是 是 是 是
Bind Service 是 是 是 是 否
Send Broadcast 是 是 是 是 是
Regist BroadcastReceiver 是 是 是 是 否
Load Resource Value 是 是 是 是 是
dpi文件夹的换算比例
之前的ldpi基本可以抛弃了,主流的dpi已经从很早之前的mdip转移到了xhdpi了,特别提醒。
PPI RESOLUTION DP PX
mdpi(160dp) 320P 1 1
hdpi(240dp) 480P 1 1.5
xhdpi(320dp) 720P 1 2
xxhdpi(480dpi) 1080P 1 3