Hi there, I'm Jacky! 👋
Hi, I'm Jacky, a code lover from China Shenzhen.
- 🌱 I’m research in areas such as Android/Linux/Kotlin
- 💬 WeChat: JackyWang0222
The top Internet companies android interview questions and answers.
Home Page: http://jackywang.tech/AndroidInterview-Q-A/
Hi, I'm Jacky, a code lover from China Shenzhen.
private static volatile SettingsDbHelper sInst = null; // <<< 这里添加了 volatile
public static SettingsDbHelper getInstance(Context context) {
SettingsDbHelper inst = sInst; // <<< 在这里创建临时变量
if (inst == null) {
synchronized (SettingsDbHelper.class) {
inst = sInst;
if (inst == null) {
inst = new SettingsDbHelper(context);
sInst = inst;
}
}
}
return inst; // <<< 注意这里返回的是临时变量
}
参考地址:Java 单例真的写对了么?
没有复用convertView我认为只会造成内存浪费,并不能算是内存泄露。所谓内存泄露应该是该释放的资源无法被释放,而没有复用convertView的话,在界面(比如Activity)退出的时候是会释放掉的,所以不能算内存泄露。
ps:可回复交流,欢迎拍砖!
DecorView的层级深度是已知而且固定的
为什么这么说呢?
另外,如何知道DecorView的层级深度呢?我知道可以在View Hierachy中查看,但如何用代码实现呢?
以下是我的思考:
这里要求的是树的深度。
数据结构里学过求二叉树的遍历。递归遍历和非递归遍历(深度->栈,广度->队列)
我也知道树和二叉树可以转化,但是那样的话好像深度就不一样了吧。
View的布局时候,Android在对View树进行自上而下的布局时,采用的是深度优先算法,而非广度优先算法,即遍历到某个View时,Android会首先沿着该View一直纵向遍历并布局到处于叶子节点的View,只有对该View及其所有子孙View(如果存在子孙View的话)完成布局后,才会布局该View的兄弟节点View。
在源码中也可以找到如下代码:
LayoutInflater.java
http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/view/LayoutInflater.java
// Gets the current parser pointer where the node is at the layout level
final int depth = parser.getDepth();
参考资料:
http://bfchengnuo.com/2016/08/11/%E7%AC%94%E8%AE%B0-Android%E6%8E%A7%E4%BB%B6%E6%9E%B6%E6%9E%84/
https://www.codeday.top/2017/06/30/26002.html
http://www.programering.com/a/MDNxADOwATY.html
检测到 JackyAndroid/AndroidInterview-Q-A 一共引入了606个开源组件,存在19个漏洞
漏洞标题:serialize-javascript 代码问题漏洞
缺陷组件:[email protected]
漏洞编号:CVE-2020-7660
漏洞描述:Verizon serialize-javascript是美国威瑞森电信(Verizon)公司的一款支持将JavaScript序列化为 JSON超集的软件包。
serialize-javascript 3.1.0之前版本中存在代码问题漏洞。远程攻击者可借助index.js文件中的‘deleteFunctions’函数利用该漏洞注入任意代码。
国家漏洞库信息:https://www.cnvd.org.cn/flaw/show/CNVD-2020-53801
影响范围:(∞, 3.1.0)
最小修复版本:3.1.0
缺陷组件引入路径:@->[email protected]>@vuepress/[email protected]>[email protected]>[email protected]
@->[email protected]>@vuepress/[email protected]>[email protected]>[email protected]>[email protected]
@->[email protected]>@vuepress/[email protected]>[email protected]>[email protected]
另外还有19个漏洞,详细报告:https://mofeisec.com/jr?p=i30427
初看起来它们与 suspend() 和 resume() 方法对没有什么分别,但是事实上它们是截然不同的。区别的核心在于,前面叙述的所有方法,阻塞时都不会释放占用的锁(如果占用了的话),而这一对方法则相反。
这句话应该是
初看起来它们与wait()和notify()方法没有什么分别
这里写的给人感觉,好像是在特殊说明suspend和resume,但实际上后面发现是在说wait和notify
Requestlayout,onlayout,onDraw,DrawChild区别与联系-猎豹
requestLayout()方法 :会导致调用measure()过程 和 layout()过程 。 说明:只是对View树重新布局layout过程包括measure()和layout()过程,不会调用draw()过程,但不会重新绘制 任何视图包括该调用者本身。
这句话有错吧?“不会调用draw()过程” 这句应该是会调用draw过程吧?
只有在activities和broadcast receivers的IntentFilter中使用android:priority 才会有效。
具体原因见链接:http://blog.csdn.net/javalive09/article/details/42172083
有前端大公司的面试题吗?楼主分享下呗。
请求转载到 牛客网讨论区 ,转载会加上你的Github和csdn的。
谢谢
生成目录会更好,哈哈哈
起因:因为手机查看md的限制,和移动端查看网页在地铁等情形下体验不好.
有没有考虑把这些文章整理为在 gitbook 上,gitbook 目前支持下载为pdf,这在给去面试路上(公交or地铁)的同学极大的便利,恰巧坐车也很无聊,不如利用起来温故下.
My account was compromised, as a result many spam issues got created across multiple repos. I am deleting all such issues. Please check my tweet: https://x.com/arghyac35/status/1729721954909684064?s=20
view刷新机制面试题,应该是说一下 View#invalidate 的流程吧
Cannot open play store at my android phone
使用Thread或者HandlerThread时,调用Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)设置优先级,否则仍然会降低程序响应,因为默认Thread的优先级和主线程相同。
将线程的优先级降低了,就应该降低ANR的概率。“否则仍然会降低程序响应”是不是写反了。
My account was compromised, as a result many spam issues got created across multiple repos. I am deleting all such issues. Please check my tweet: https://x.com/arghyac35/status/1729721954909684064?s=20
can you translate whole words which written in chines language in the table please
相同功能的一个页面,例如登录页面。使用Fragment与Activity在性能上有什么显著的差异么?项目中新开一个Activity的内存开销是怎样的呢?我认为两种方式实现,内存开销的差异上并不是很大,是这样么?期待您的回复,谢谢。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.