-
Notification自定义布局RemoteViews
Notification要实现自定义布局,就必须使用RemoteViews,而RemoteViews并不支持所有控件,所以在设置布局时,布局文件内的控件类型必须做好挑选,例如ConstraintLayout,RemoteViews就不支持,如果布局使用了ConstraintLayout,就会报错:android.app.RemoteServiceException: Bad notification posted from package com.statussaver.statusdownloader: Couldn't expand RemoteViews for: StatusBarNotification
-
确定内存泄漏位置
1.在项目中集成leakcanary,以便及时获得内存泄漏的通知,以及内存泄漏的位置
2.使用studio自带的Profile确定对应类是否真的泄漏了
点击进入Profile
点击查看内存详情
点击触发GC,防止可以回收的对象留在内存中混淆分析结果
点击获取接下来一段时间内的内存使用情况
点击选择显示类型,一般选择按包显示,因为一般我们只分析自己的代码
找到自己的包,开始分析
https://developer.android.com/studio/profile/memory-profiler?hl=zh-cn
-
VideoView导致内存泄漏
VideoView控件因为自身原因,常常会导致内存泄漏的情况发生,所以最好不要使用该控件,而使用其他控件代替
-
CoordinatorLayout+AppBarLayout隐藏标题栏
要隐藏的控件就设置:
app:layout_scrollFlags="scroll|enterAlways"
滑动控件设置(也可设置在滑动控件的父布局上) :
app:layout_behavior="@string/appbar_scrolling_view_behavior"
scroll: 所有想滚动出屏幕的view都需要设置这个flag- 没有设置这个flag的view将被固定在屏幕顶部。
enterAlways:这个flag让任意向下的滚动都会导致该view变为可见
enterAlwaysCollapsed:当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。
exitUntilCollapsed: 滚动退出屏幕,最后折叠在顶端。
-
LitePal
数据库第三方,将数据库与bean结合,操作简单,使用方便
-
服务常驻保活
https://github.com/xingda920813/HelloDaemon
https://www.twblogs.net/a/5c767441bd9eee339917fb1b/zh-cn
-
TabLayout
使用简单方便,tab可设置图片,控制下划线长度宽度
https://github.com/H07000223/FlycoTabLayout
-
抓包
使用的工具为:Charles
下载和破解网站:https://www.zzzmode.com/mytools/charles/
使用教程:https://www.axihe.com/charles/main/readme.html
启动Charles后,部分网站无法访问的原因: 虽然安装了Charles的证书,但是证书并没有被信任
mac:https://blog.youkuaiyun.com/yarden0/article/details/78358299
window:https://jingyan.baidu.com/article/9f7e7ec0c1107c6f29155461.html
找到证书后,直接右键剪接到 “受信任的根证书颁发机构”的证书列表里即可