Android存储系统概况
在api 28 29 30 31 33都进行测试过。
/是根目录
/data/data/com.xxx.xxx/…
首先 /sdcard/、/storage/self/primary/ 真正指向的是/storage/emulated/0/,所以用x表示这三者。x/Android/data/com.xxx.xxx/…
x/[DCIM, Alarm, Pictures]
x下其他目录,比如 x/qq
1、2都是特定应用的,特点是路径有包名。这两个目录本App无需申请访问权限即可申请,其它App也无法访问本App的目录。
1称为 internal storage,2称为 external storage的应用专属目录。
3我称之为 external public storage。
4称之为其他目录
1、2不受分区存储影响。
4我不会。
在本文就研究对于3受分区存储的影响(表现在9 ...
王家卫《手》
大半生的痴恋起源于第一次被她手。
第一次总是难以忘怀。
单身的意义
One of the most important preconditions of a good relationship is a satisfactory perspective on being single
The more we are happy to be on our own the more we will be able to exercise the correct degree of caution around finding a new companion
The Bedrock of true love is Happy singledom
真爱的基石是快乐的单身生活
Unfortunately, our societies do very little to help us be calm or at ease in our own company
不幸的是,我们的社会并没有教我们如何在一个人的时候保持冷静和自在
Singleton is framed as an involuntary depressing and always hopef ...
《东邪西毒》
欧阳锋从小是孤儿,和他哥哥一起生活。他从小就学会了如何保护自己。若要使自己不受伤害,他在一开始就拒绝。他爱着一个女人,但就像一个自卑的小孩,不敢说出口,他怕被拒绝会受伤。其实那个女人也喜欢他,但她年轻气盛,她和他赌气,就是要欧阳锋亲口说出”我喜欢你“才和他结婚。在要嫁给他哥哥的那个晚上,欧阳锋想要带她走,她却死活不跟他走。
后来,和黄药师对话时说:”我只希望他说一句话,他都不肯说,他太自信了,以为我一定会嫁给他,谁知道我嫁给了他哥哥。在我们结婚那天,他要我跟他走,我没答应。为什么要到失去的时候才去争取?既然是这样,我不会让他得到。“
最后,欧阳锋只身一人离开白驼山,在沙漠中做起了杀手中介;她悔恨着失去的美好年华没和他在一起。
Android权限有感
看了一晚的PermissionX系列文章,guolin写的挺好的。再次感慨Android系统的权限分类的请求的复杂。
在横向上,权限分为普通,危险,特殊三个级别。普通的只需要manifest中声明,危险则是运行时请求,特殊则是利用Intent导向一个特定界面来开启。
纵向上,随着Android版本的变化,要 做某一个功能,需要的权限 可能不一样;在高版本中,要用高版本的方法;在判断手机版本低时,要用旧方法。等等不言而喻。
干。
《重庆森林》感
很深刻的,诠释了都市里人与人之间的冷漠,但也让两个人的相遇变得如此缘分与美妙。在看的时候,会感受到一种类似于自己就是海洋中的一座孤岛的孤独感。有一个作家写的小说也可以让我有一种感觉,那就是村上春树。
村上的小说带有太多奇幻的成分,重庆森林也带有一点奇幻感,它们都让不可思议的情节无缝衔接地发生在日常之中。第一个故事的杀手,第二个故事的”海螺姑娘“,都让这个很世俗的城市带着点荒诞。
学习Moshi
vs GsonGson的仓库介绍:Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object.
Gson专门用于Java。
Moshi的介绍:Moshi is a modern JSON library for Android, Java and Kotlin. It makes it easy to parse JSON into Java and Kotlin classes.
在开始学习之前,有理由推测 Moshi针对Kotlin做了一些提升,可以做到Gson对Kotlin所做不到的功能。
依赖12345678910// ktsplugins { kotlin("jvm") version "1.8.10" java kotlin(&q ...
After watching Shutter Island
How we doing this morning?
Good. And you?
Can’t complain.
So what’s our next move?
You tell me.
We gotta get off this rock, chuck.Get back to the mainland.Whatever the hell’s going on here, it’s bad.
……
Dont worry, partner, they’re not gonna catch us.
That’s right. We’re too smart for them.
Yeah, we are, aren’t we?
……
You know, this place makes me wonder…
Yeah, what’s that, boss?
Which would be worse, to live as a monster or to die as a good man?
Teddy?
顶部凹陷Shape
前言看到StackOverFlow上一个提问
CardView with Arc Shape on border
提问者想知道怎么做一个控件如下图:
而经过我的尝试,最终做出:
顶部的按钮就不做了,没什么难度。
讲解直接对Surface控件进行操作,阴影和Border都可以直接设置Surface的属性来解决,而形状通过编写一个合适的Shape类传给它来设置。
1234567891011Surface( ... elevation = 5.dp, color = Color.White, shape = GenericShape { size: Size, _: LayoutDirection -> buildCustomPath(size, cornerRadiusPx, centerCircleRadiusPx)// 重点 }, border = BorderStroke(1.dp, Color.Gray.copy(alpha = 0.6f)) ...
coroutineScope vs supervisorScope
总结并不完全,只列出一些主要异同。
同1 内部子协程及作用域本身都完成了函数才完成
This function returns as soon as the given block and all its child coroutines are completed.
2 都不参与函数调用处所在的scope的结构化并发在函数调用处 re-throw exception。
异主要体现在异常情况下的 parent-child 取消逻辑。
coroutineScope是双向的取消1子协程发生异常 -> coroutineScope作用域整个取消 -> 其他子协程也被取消
2coroutineScope取消/作用域本身异常 -> 取消内部所有子协程
supervisorScope是单向的取消1supervisorScope取消/作用域本身异常 -> 取消内部所有子协程。
但是内部的子协程异常不会导致supervisorScope作用域的取消。需要像顶层协程那样给子协程设置Handler为他们设置独立的错误处理器,不设置的话没有处理就会打印异常信息。 ...