- 博客(111)
- 资源 (1)
- 收藏
- 关注
原创 adb shell input 分析(1)
adb shell input的功能adb shell input可以通过adb命令行发送input事件。包含keyevent和text两种。keyevent对于安卓API KeyEvent定义的健值均可支持https://developer.android.com/reference/android/view/KeyEvent健值举例:KEYCODE_0Added i...
2019-12-12 16:53:12 1979
原创 互联网公司的手机梦为什么总是破灭?
最近传出字节跳动(今日头条、抖音母公司)要做手机的消息,同时引起互联网圈和手机圈关注。这也很正常,互联网、手机、如日中天发展迅猛的字节跳动,都是时下热词,这几个词组和在一起,必然成为新闻。虽然仔细了解后,会发现字节跳动收购了锤子以后,做手机似乎也是水到渠成的事情了。字节跳动是一家年轻的公司,互联网行业本身一日千里,且字节跳动形势正好,所以在任何领域发力,都可以理解。但在手机领域的涉足,让人不得...
2019-08-09 15:19:38 611
原创 大公司什么样的新项目更可能成功?
大公司财力雄厚,在某些领域有巨大的优势(这也是成为大公司的必要条件),加之计算机行业瞬息万变,从业者往往有被颠覆的焦虑,所以大公司往往会开设很多创新项目。尤其互联网公司,本身行业的特点就包含试错成本小,成长速度快(如果做对了方向)。对于大公司的局外人,常常会低估大公司的内部创新项目的数量,因为大部分项目其实还没有来得及被绝大多数用户知道,就已经死掉了。如果你是业内人,常常会在同学、前同事的闲聊中发...
2019-08-07 19:03:48 651
原创 关于“公司基因论”的争论,吴军观点没有错
最近吴军对于腾讯的评论,进而引发了关于“公司基因论”的争论。具体可以参看这篇文章:让吴军被骂的“公司基因论”究竟从哪来的?https://mp.weixin.qq.com/s/7CKbanVWA3B7JxMVq-vl0A看了一下双方的观点,基本上还是觉得吴军的关于公司基因的论述并无问题。这是吴军原文,可以看到有几个点:(1)论述的对象是成熟的、在某个领域特别成功...
2019-07-19 22:31:00 428
原创 浅谈Android多进程APP的优势
在Android APP开发中,常常会采用多进程的方式。多进程APP当然会带来一些额外的开发成本,例如进程间通信。但收益也是显而易见。浅谈一下Android多进程APP的优势,至少有以下三点:1.享受更多的资源Android系统底层是Linux,每一个进程能够使用的系统资源都是有上限的,例如内存。多进程意味着更多的内存可供使用。如果你需要实现的业务功能需要耗费大量的内存,将一些比较独立且占...
2019-06-27 17:19:30 1172
原创 特斯拉的降价并非马斯克疯了
最近关于特斯拉的降价有很多负面的评论,譬如:降价会降低特斯拉的品牌价值,对比案例就是苹果;降价会拉低特斯拉的利润率,作为一个上市公司来说,可能直接影响到财报,股价也跟着跌了。当然,对于比亚迪和蔚来为代表的的各类寄希望于电动车时代弯道超车的中国电动车品牌,这个消息绝对是一枚“重磅炸弹”。中国制造以目前来看,最重要的优势仍然是性价比,国产以后甚至有望售价低于30万的特斯拉Model3,以豪华品牌来看,...
2019-03-07 11:08:23 355
原创 如何解决WebView打开网页不能自动播放声音的问题?
Android在Api Level 17增加了一个WebView的配置:WebSettings.getMediaPlaybackRequiresUserGesture();WebSettings.setMediaPlaybackRequiresUserGesture(boolean);详见android dev文档:https://developer.android.com/ref...
2018-11-02 20:09:36 6741
原创 如何避免WebView在Activity finish之后仍然有声音?
Android App中,如果一个Activity使用了WebView,并且加载的网页有声音,有些机型会出现Activity finish之后,仍然有声音。这是Android系统或厂商ROM本身的一个问题,作为App方只能想办法绕过去。有一种办法,手动调用一次WebView.destroy(),可以生效。不过需要注意,在低版本Android(4.4.4)上,会引起底层crash,解决方法是需要...
2018-06-21 20:19:03 1106
原创 Android倒计时工具CountDownTimer的用法及原理(二)
实现原理拿CountDownTimer的源代码看一下,并不复杂,基本上是对Handler的封装,使用send/post delay。这套机制仍然首先于Handler的原理,所以在精度上也不能够保证很精确,只能保证不会早于预期执行。详见我另外一篇介绍Handler send/post delay的文章: Handler sendMessageDelayed()/postDelayed()机制详解。源...
2018-02-26 17:09:53 810
原创 Android倒计时工具CountDownTimer的用法及原理(一)
CountDownTimer是Android官方SDK提供的一个倒计时工具,其仍然是基于Handler send/post delay,可视作在倒计时这个特定的使用场景下对于Handler的一种封装。用法CountDownTimer使用起来是很方便的。CountDownTimer是一个抽象类,通过构造方法创建实例,并且实现两个抽象方法即可。start()方法为启动倒计时。CountDownTime...
2018-02-24 14:08:09 5535
原创 测试volatile变量的读写性能
volatile变量与非volatile变量的区别在于,volatile变量每次读都需要去主内存读取最新的值,每次写也需要写回到主内存;非volatile变量允许在缓存中读写以加快计算速度。
2017-12-29 16:12:02 3512
原创 SQLite实用武器库(4)附加数据库(Attach DB)
对于连接到数据库A,同时需要使用数据库B中的数据的情况,SQLite提供了一种将外部数据库附加到当前数据库连接的机制——Attach DB。
2017-11-17 10:16:57 9697
原创 Android ContentProvider的线程安全(一)
本文集中讨论一下Android基于ContentProvider的数据库体系的线程安全问题。
2017-10-27 11:24:37 6173 1
原创 SQL保留字符的处理(like,%,_) -Android下Java层的处理
上一篇从SQL的角度看了一下like保留字符和转义字符的解决方法。在Android平台下,一般是在Java层根据业务逻辑拼装SQL语句。所以需要对于like参数做转义字符的替换,然后再将后缀escape代码段拼接上去。
2017-10-24 17:45:41 685
原创 String.replace()和String.replaceAll()性能对比
Java中有些常用的API其实值得仔细研究一下,比如String.replace()和String.replaceAll()。
2017-10-20 15:46:36 16160 3
原创 从toString()/fromString()角度看JSON(1)
JSON是极常用的一种数据结构,跨语言,且可以与String非常友好地互相转化,尤其在客户端与服务器的http接口通讯中广泛使用。本文从JSON与String相互转化的角度介绍一下Android下JSON的源代码。
2017-09-07 17:19:24 799
原创 Android“时区”的那些事儿(1)
android支持多时区。那么就引出一个问题,在切换时区的时候(随网络自动切换或者手动切换,同时不手动改变手机时间),这个时间戳的值是否是不受影响地持续自增?时区变化会导致当前系统时间随时差而变,这个变化是如何实现的?
2017-08-14 16:53:32 1999
原创 View.postDelayed()/post() 原理(1)
View.postDelayed()/post()。Android官方文档介绍这类API是向UI线程发消息,Runnable执行在UI线程中。View.postDelayed()/post()在 框架层的实现原理。
2017-08-08 17:09:23 2809
原创 LOCAL_PRIVILEGED_MODULE 详解(3)
2.2 ApplicationInfo中的 privateFlags 和 PRIVATE_FLAG_PRIVILEGED
2017-07-20 19:32:20 9860
原创 LOCAL_PRIVILEGED_MODULE 详解(2)
2.安装时作用在介绍LOCAL_PRIVILEGED_MODULE在安装时的作用之前,先介绍几个关键的准备知识
2017-07-17 09:14:13 2915
原创 LOCAL_PRIVILEGED_MODULE 详解(1)
LOCAL_PRIVILEGED_MODULE 是Android ROM编译时的一个变量,其与编译、安装、权限管理等几个方面都有关系。本文整理一下与LOCAL_PRIVILEGED_MODULE有关的知识。
2017-07-14 16:31:00 18904
原创 小米手机如何使用Android Monitor?
Android Monitor 是Android Studio的重要工具,可以用来查看进程的内存、CPU等使用情况。本文简要记录一下如何在小米手机上使用Android Monitor。
2017-06-15 14:43:44 3323
原创 打点利器——ActivityLifecycleCallbacks
ActivityLifecycleCallbacks是一个定义在Application类中的接口,API level 14。这个接口可以监控App进程中所有的Activity,在生命周期收到回调
2017-06-10 14:11:11 1221
原创 Android DeepLink原理与应用(2)
3.Android框架层如何实现DeepLink?上一篇提到Android使用DeepLink跳转有两种方式:Intent跳转、WebView网页跳转。这篇研究一下Android框架如何实现DeepLink。以下Android源代码分析版本为Android7.1。 (1)Intent跳转 这其实是一个Intent filter + start Activity的过程,使用的Intent C
2017-06-07 19:37:18 2101
原创 微信能一统天下吗?
微信越来越火,火到硅谷的社交产品都开始抄微信了,中国it从业者多年来被硅谷压抑的自尊仿佛终于昭雪了。随之而来,腾讯的市值越来越高。腾讯和阿里你追我赶,屡创中国科技公司的市值巅峰记录。与美国那些真正的科技巨头之间的差距正在缩小。微信似乎野心越来越大了。最近网上爆出的新版微信,有个搞笑的图,意思是微信“发现”中的入口要干倒几家巨头、准巨头。我觉得有点扯淡。微信固然强
2017-05-26 17:43:10 921
原创 SQLite实用武器库(3)利用headers命令在命令行中显示列信息
对于表的信息,我们可以通过.schema命令来查看。但这样仍然不方便对应着列信息来看数据,尤其是实际工程中的数据库表往往有几十个列。可以使用headers命令来开启列信息显示。
2017-05-25 10:02:26 2254
原创 SQLite实用武器库(2)利用import命令导入导出数据到CSV文件
(1)什么是csv文件?CSV,即Comma-Separated Values,意思是逗号分隔值,或字符分隔值。.csv文件是一种将表数据借助字符分隔的方式存储成文本的文件格式。譬如,可以在excel中另存为csv文件。我们先来试一个,创建一个excel文件,内容如下:
2017-05-19 18:30:04 3489
编写安全的代码Writing Secure Code / Michael Howard, David LeBlanc
2009-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人