- 博客(28)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 Android studio启动DDMS失败
今天我用AS启动DDMS失败了,失败的信息是:A Java Runtime Environment (JRE) or Java Development Kit (JDK)must be available in order to run Monitor. No Java virtual machinewas found after searching the following location
2017-09-29 18:14:53 2169 1
原创 Default Activity Not Found
前言有时候我们需要编译没有android.intent.action.MAIN属性activity的应用,但是Android studio默认是需要mainactivity的解决方法最简单了,就是在AndroidManifest.xml中添加下面这行代码:<action android:name="android.intent.action.MAIN" />如果实在是不需要android.in
2017-09-29 18:07:51 4642 5
原创 最近任务栏清除app导致app不执行onDestory
问题步骤:在计算器面板上出入数字,然后按Menu键进入最近任务界面,右滑清楚计算器,接着再进入计算器期望结果:再次进入计算器,上面显示的内容和之前的一致实际结果:没有保存初步分析开发计算器的工程师A说保存的代码写在了onDestory内,他说因为计算器的生命周期没有走完酒杯杀掉了,觉得是系统的问题,让系统的工程师看我看了问题和工程师A的回复,我首先说,保存重要数据,不要保存在onStop
2017-09-09 17:16:17 4476
原创 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 9318 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 2757 1
原创 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 2016
原创 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 2863 1
原创 Andorid N 最近任务管理器流程详解(一)
前言相信大家都用过任务管理器,不同的手机上面启动的方式可能会有不同,有虚拟按键或者实体按键的,可能会通过短按或者长按Menu键来触发,如果这些都没有,只有一个指纹按键的,可能是通过长按的方式来触发。这个功能我们经常会用到,他可以让我们快速回到之前任务栈,好了,废话不多说了,直接来分析代码。 我们分为五个部分来讲解,分别是:最近任务管理器的触发Task的获取缩略图的获取Task的移除其他
2017-06-12 16:54:39 2782
原创 Android 广播内部机制详解(三)
4 广播的处理广播的处理都会调用BroadcastQueue下的scheduleBroadcastsLocked(),接下我们来看看这个函数4.1 scheduleBroadcastsLocked文件:BroadcastQueue.java public void scheduleBroadcastsLocked() { if (mBroadcastsScheduled) {
2017-03-06 16:27:27 2220
原创 Android 广播内部机制详解(二)
2. 广播的发送广播的发送,其实也是交给AMS来完成的,首先调用context.sendBroadcast将广播发给AMS的相应函数,AMS再和之前注册的Receiver进行匹配,匹配成功后,就发送给对应的进程。好了,接下来我们通过源码来论证这个结论。2.1 sendBroadcast文件:ContextImpl.java @Override public void sendBroad
2017-03-06 11:40:50 1014
原创 Android 广播内部机制详解(一)
前言相信大家在应用开发中都用过Broadcast,单纯从使用的角度来说,是非常容易的,但对于系统开发工程师来说,需要了解广播运行的机制,那还是有必要去阅读它的源码。 关于Broadcast的代码也是非常非常多的,我这里将分成几个部分来讲,分别是: 广播的类型、广播的注册、广播的发送、广播的处理、广播总结和建议。传送门: Android 广播内部机制详解(二) Android 广播内部机制详解
2017-03-03 10:02:29 902 1
原创 Handler延时处理消息的流程
前言昨天碰到一个关于handler的问题,当我使用sendEmptyMessageDelayed这个方法,在手机熄屏的情况下并没有按时发送消息,而且中间的时间还不固定,有时候短,有时候长,但是在亮屏和充电情况下,没有该问题。 难道handler的延时本身就不准?带着疑问我看了下handler的运行机制,找到了答案!next()和enqueueMessage()本篇文章默认为你已经知道handler
2016-12-30 16:00:37 11523 1
翻译 Android开发之获取手机运行时间
前言昨天我碰到一个问题,需要判断两次的时间,我当时的第一反应是用System.currentTimeMillis()来判断,最后发现这样会有一个BUG,那就是用户如果手动修改时间,那就全乱套了,于是我想有没有一个时间是只增加不减少,并且用户是不能修改的?一查,发现还真有,主要和SystemClock有关,接下来对这个类进行学习。
2016-12-30 14:29:57 6591
原创 Android自定义View
前言Android给我们提供了大量的View,但是我们有时候发现很多APP的有一些Android本来没有的View,显然他们都是自定义的。自定义View可以实现很多绚丽的效果,但是如果你对View结构层次,事件的分发机制及View的工作原理不是很了解的话,那么做出来的View是有隐患的! 本文主要讲解自定义View和ViewGroup的实现,我默认为你们已经了解了View结构层次,事件的分发机制及
2016-12-10 23:28:54 265
原创 设计模式---Builder模式
前言:网络上有人将它定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的对象。 所以建造者模式适合于一个具有较多的零件(属性)的产品(对象)的创建过程。
2016-12-05 09:45:08 258
原创 ActivityManagerService源码分析(一)
前言:AMS是Android系统服务中很重要的一个,他负责四大组件的启动、切换、调度、生命周期的管理等等,接下来我们根据AMS的启动来分析AMS的源码
2016-12-02 11:35:02 1235
原创 Handler浅析
Android中多线程经常会涉及到传递消息的问题,尤其是更新UI,众所周知,子线程是无法更新UI,这时候就要借助Handler的消息传递机制。
2016-11-28 11:10:46 263
原创 自定义插值器
相信大家都用过补间动画(Tween Animation),那么对插值器(Interpolator)应该也不陌生,虽然SDK已经提供了一些Interpolator的实现类,但是如果你想实现一些特定效果,那就得自己自定义了
2016-11-18 13:49:28 759
原创 解决Font size和Display size设置到最大,显示异常的问题
Android7.0的设置里面有一个显示模块,里面有字体大小和显示大小的设置,调节的时候可能会造成显示异常的问题。
2016-11-12 15:06:47 5581
原创 解决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 78944 12
原创 解决Malformed line 1 in source list /etc/apt/sources.list.d/google-chrome.list (type)
昨天我安装chrome浏览器时,最后源出了点问题,导致apt-get update不能使用了,报错如下:```neal@ubuntu:~$ apt-get updateE: Malformed line 1 in source list /etc/apt/sources.list.d/google-chrome.list (type)E: The list of sources could no
2016-10-30 11:21:17 24662 4
原创 虚拟机中的ubuntu怎么设置1920X1080分辨率
前言 装过ubuntu的虚拟机人应该都知道,刚刚装完系统时,分辨率小的令人发指,根本就不能愉快的使用,所以必须调整,但是有些分辨率ubuntu里面也没有,这就需要我们自己自定义。自定义分辨率输入:$cvt 1920 1080 返回的结果是: # 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz Modeli
2016-10-29 23:09:19 125139 30
原创 装机那些事
前言我之前本来想装双系统,奈何主板没有ubuntu的驱动,于是只能继续虚拟机,中途有很多经验我觉得有必要分享一下,希望你们不要走我的弯路。一、不是所有的主板都支持ubuntu有过装机经验的同学应该知道,装机前有一个准备工作,就要进的bios把secure boot置为disable。 前方高能,请注意了!!! 不是所有的主板可以设置secure boot,也不是所有的主板都提供ubuntu的驱
2016-10-29 22:34:11 521
原创 清除未接来电及通知
应用中有时候会需要获取未接来电,但是当你看完这些未接来电你可能想清除未接来电的通知,及把未接来电变成已读,这时候你需要对数据库操作。 有两种方法可以达到上述需求(其实原理都一样):一、 直接更改数据库 我们可以参考源码来进行操作,找到MissedCallNotifierImpl.java类,路径是: packages\services\Telecomm\src\com\a
2016-10-21 23:23:57 2696
原创 Android 6.0动态权限的获取
Android6.0的权限分为普通权限和危险权限,其中普通权限还是可以和以前一样,通过在AndroidManifest.xml中赋予,比如:<uses-permission android:name="android.permission.INTERNET"/> 所以我们重点说一下危险权限
2016-10-15 23:05:20 550
adb 1.0.39下载
2018-12-19
adb 1.0.32下载
2018-12-19
win7旗舰版安装office2010时报错1719
2013-12-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人