
Android
文章平均质量分 78
渔人爱编程
划船不用桨,全靠浪!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
清除未接来电及通知
应用中有时候会需要获取未接来电,但是当你看完这些未接来电你可能想清除未接来电的通知,及把未接来电变成已读,这时候你需要对数据库操作。 有两种方法可以达到上述需求(其实原理都一样):一、 直接更改数据库 我们可以参考源码来进行操作,找到MissedCallNotifierImpl.java类,路径是: packages\services\Telecomm\src\com\a原创 2016-10-21 23:23:57 · 2907 阅读 · 0 评论 -
Android 广播内部机制详解(一)
前言相信大家在应用开发中都用过Broadcast,单纯从使用的角度来说,是非常容易的,但对于系统开发工程师来说,需要了解广播运行的机制,那还是有必要去阅读它的源码。 关于Broadcast的代码也是非常非常多的,我这里将分成几个部分来讲,分别是: 广播的类型、广播的注册、广播的发送、广播的处理、广播总结和建议。传送门: Android 广播内部机制详解(二) Android 广播内部机制详解原创 2017-03-03 10:02:29 · 948 阅读 · 1 评论 -
Android 广播内部机制详解(三)
4 广播的处理广播的处理都会调用BroadcastQueue下的scheduleBroadcastsLocked(),接下我们来看看这个函数4.1 scheduleBroadcastsLocked文件:BroadcastQueue.java public void scheduleBroadcastsLocked() { if (mBroadcastsScheduled) {原创 2017-03-06 16:27:27 · 2312 阅读 · 0 评论 -
Andorid N 最近任务管理器流程详解(一)
前言相信大家都用过任务管理器,不同的手机上面启动的方式可能会有不同,有虚拟按键或者实体按键的,可能会通过短按或者长按Menu键来触发,如果这些都没有,只有一个指纹按键的,可能是通过长按的方式来触发。这个功能我们经常会用到,他可以让我们快速回到之前任务栈,好了,废话不多说了,直接来分析代码。 我们分为五个部分来讲解,分别是:最近任务管理器的触发Task的获取缩略图的获取Task的移除其他原创 2017-06-12 16:54:39 · 2923 阅读 · 0 评论 -
Andorid N 最近任务管理器流程详解(三)
3. 缩略图的获取本章节主要讲一下缩略图的获取原创 2017-06-14 14:06:24 · 1684 阅读 · 0 评论 -
Andorid N 最近任务管理器流程详解(四)
4. Task的移除本章节主要讲讲Task移除的流程4.1 removeTask文件:SystemServicesProxy.java public void removeTask(final int taskId) { if (mAm == null) return; if (RecentsDebugFlags.Static.EnableMockTasks)原创 2017-06-14 16:55:29 · 2095 阅读 · 0 评论 -
Andorid N 最近任务管理器流程详解(二)
2、Task的获取本章主要承接上面的来讲,解析一下Task的获取流程2.1 preloadTasks文件:RecentsTaskLoader.java public void preloadTasks(RecentsTaskLoadPlan plan, int runningTaskId, boolean includeFrontMostExcludedTask) {原创 2017-06-14 10:51:23 · 3001 阅读 · 1 评论 -
Andorid N 最近任务管理器流程详解(五)
5、其他这章节主要会讲mRecentTasks赋值的地方,截图的时机,一些重点方法等5.1 mRecentTasks赋值分别会在startActivity的过程中和重新resume时对mRecentTasks赋值,另外ActivityStack和AMS两者中的mRecentTasks是同一个,具体可以看源码分析5.1.1 startActivity其中startActivity原创 2017-06-15 10:53:20 · 2885 阅读 · 1 评论 -
Android N 各种ANR的时间
前言大家都知道组件的执行任务的时间过长可能会导致ANR,但具体是多久呢?源码里面都定义了宏,我们把它们找出来,做了记录正文Service Timeout文件:ActiveServices.java // How long we wait for a service to finish executing. static final int SERVICE_TIMEOUT = 20*10原创 2017-07-07 14:37:07 · 9441 阅读 · 1 评论 -
Android 广播内部机制详解(二)
2. 广播的发送广播的发送,其实也是交给AMS来完成的,首先调用context.sendBroadcast将广播发给AMS的相应函数,AMS再和之前注册的Receiver进行匹配,匹配成功后,就发送给对应的进程。好了,接下来我们通过源码来论证这个结论。2.1 sendBroadcast文件:ContextImpl.java @Override public void sendBroad原创 2017-03-06 11:40:50 · 1074 阅读 · 0 评论 -
Handler延时处理消息的流程
前言昨天碰到一个关于handler的问题,当我使用sendEmptyMessageDelayed这个方法,在手机熄屏的情况下并没有按时发送消息,而且中间的时间还不固定,有时候短,有时候长,但是在亮屏和充电情况下,没有该问题。 难道handler的延时本身就不准?带着疑问我看了下handler的运行机制,找到了答案!next()和enqueueMessage()本篇文章默认为你已经知道handler原创 2016-12-30 16:00:37 · 11687 阅读 · 1 评论 -
Android开发之获取手机运行时间
前言昨天我碰到一个问题,需要判断两次的时间,我当时的第一反应是用System.currentTimeMillis()来判断,最后发现这样会有一个BUG,那就是用户如果手动修改时间,那就全乱套了,于是我想有没有一个时间是只增加不减少,并且用户是不能修改的?一查,发现还真有,主要和SystemClock有关,接下来对这个类进行学习。翻译 2016-12-30 14:29:57 · 6705 阅读 · 0 评论 -
Android 6.0动态权限的获取
Android6.0的权限分为普通权限和危险权限,其中普通权限还是可以和以前一样,通过在AndroidManifest.xml中赋予,比如:<uses-permission android:name="android.permission.INTERNET"/> 所以我们重点说一下危险权限原创 2016-10-15 23:05:20 · 595 阅读 · 0 评论 -
解决Android应用签名和系统不一致的问题
今天碰到一个签名的问题,我负责的应用安装时,会报错:安装命令: adb install -r ApeFolio.apk报错信息: Failed to install ApeFolio.apk: Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: Package couldn't be installed in /data/app/com.ape.l原创 2016-11-02 14:51:14 · 80290 阅读 · 12 评论 -
libphonenumber:Google的公共电话号码解析库
解析电话号码,智能获取地名原创 2016-10-21 19:25:47 · 8147 阅读 · 1 评论 -
解决Font size和Display size设置到最大,显示异常的问题
Android7.0的设置里面有一个显示模块,里面有字体大小和显示大小的设置,调节的时候可能会造成显示异常的问题。原创 2016-11-12 15:06:47 · 5707 阅读 · 0 评论 -
判断用户模式
因为android有多用户模式,即机主或访客,不同的模式所能获得权限也不同。所以我们有时需要判断当前的模式。原创 2016-11-18 10:28:31 · 1094 阅读 · 0 评论 -
自定义插值器
相信大家都用过补间动画(Tween Animation),那么对插值器(Interpolator)应该也不陌生,虽然SDK已经提供了一些Interpolator的实现类,但是如果你想实现一些特定效果,那就得自己自定义了原创 2016-11-18 13:49:28 · 798 阅读 · 0 评论 -
ActivityManagerService源码分析(一)
前言:AMS是Android系统服务中很重要的一个,他负责四大组件的启动、切换、调度、生命周期的管理等等,接下来我们根据AMS的启动来分析AMS的源码原创 2016-12-02 11:35:02 · 1297 阅读 · 0 评论 -
Handler浅析
Android中多线程经常会涉及到传递消息的问题,尤其是更新UI,众所周知,子线程是无法更新UI,这时候就要借助Handler的消息传递机制。原创 2016-11-28 11:10:46 · 297 阅读 · 0 评论 -
最近任务栏清除app导致app不执行onDestory
问题步骤:在计算器面板上出入数字,然后按Menu键进入最近任务界面,右滑清楚计算器,接着再进入计算器期望结果:再次进入计算器,上面显示的内容和之前的一致实际结果:没有保存初步分析开发计算器的工程师A说保存的代码写在了onDestory内,他说因为计算器的生命周期没有走完酒杯杀掉了,觉得是系统的问题,让系统的工程师看我看了问题和工程师A的回复,我首先说,保存重要数据,不要保存在onStop原创 2017-09-09 17:16:17 · 4692 阅读 · 0 评论