手记
分享经验交流心得,学习前沿流行技术
-
looper竟然有副业?
这年头, 副业都成了常态了, 连looper也不例外, 我们这篇文章呢就来聊一下looper的副业。 首先呢, 我们回顾一下looper的主业是什么, 就是消息循环啊, public static void loop() { final Looper me = myLooper(); final MessageQueue queue = me.mQueue; for (;;) { Message msg = queue.next(); msg.target.dispatchMessage(msg); } } 这不断从消息队列取消息, 分发消息。没有可以处理的消息的话, 就在这干等着, 在这个next函数里, 我们跟进去看一下, Mes
1603浏览
3推荐
1评论
-
跨进程传递大图怎么破?
我们平时应用开发,跨进程传递数据这个是经常有,但是传递的数据量很大,甚至超过了允许的最大值,导致抛异常,这个可能不那么常见。比如发了一个很长的列表,或者一个很大的字符串,或者发了一张大图,都有可能出现异常。这个问题虽然不常见,但是一旦出现一般都很棘手,而且一定要解决的啊。我们怎么解决呢,怎么样才能突破这个限制呢?这是个问题啊,我们接下来就来讨论这个问题。跨进程传递大图,我们能想到哪些方案呢?最容易想到的一种就是先给图片保存到文件,给路径跨进程传过去,对方再从文件给图片decode出来,这个方案是可行,就是性能不怎么样,你能想象我传个大图要好几秒么。另一种方案就是通过跨进程通信的方式,就是不走文件,直接走内存,这个肯定会快不少。跨进程通信有哪些方式呢?首先Binder性能是可以,用起来也方便,但是有大小的限制,传的数据量大了就会抛异常。Socket或者管道性能不太好,涉及到至少两次拷贝。共享内存性能还不错,可以考虑,关键看怎么实现。总之呢,性能是重点考虑的因素。我们来看,通过Binder传图,有几种方案?一个
2905浏览
2推荐
2评论