- 博客(92)
- 资源 (30)
- 收藏
- 关注
转载 关于Recovery及OTA升级的一些积累
Android的recovery是我在公司做的最多的,应该也是我在Android中了解的较为深入的一个部分。recovery这部分其实Android本身都已经提供了很完善的一套机制,但是因为公司是做机顶盒的,所以在因为平台订制的关系,recovery这部分还是做了很多修改的。首先,修改的比较少的是OTT这种盒子,本次也主要讲这种,其实这种和手机区别不大。而类似将DVB 中的loader和Andr...
2019-10-25 11:08:50
1564
原创 android P OTA (MTK)初探 —— 3、基于块(Block)的OTA:升级包的制作流程
上文简单介绍了Target包,本文重点分析完整升级包。一、OTA的流程图(转)网上看到的一份不错的流程图。二、升级包制作命令制作升级包需要用到alps/build/tools/releasetools/ota_from_target_files.py这个脚本文件。可以配置很多参数。一般需要的命令格式如下:./build/tools/releasetools/ota_from_targ...
2019-07-27 16:58:53
5814
原创 android P OTA (MTK)初探 —— 2、基于块(Block)的OTA:Target 包的制作流程
上文简单介绍了OTA的分类和流程,本文重点分析Target包。一、Target包结构:二、生成命令研究OTA会发现网上介绍比较多的命令是 make otapackage ,编译完成后,在根目录执行这个命令会生成Target包和完整升级包。其实有单独编译Target 包的命令:make target-files-packageandroid默认情况下,最终生成的Target包在此目录下:...
2019-07-27 15:57:30
3003
2
原创 android P OTA 初探 —— 1、OTA简单介绍
本系列介绍自己理解的基于android P的OTA系统。由于工作需要开始研究,实践经验匮乏,难免有理解不够或者错误之处。还请多多指正,不吝赐教!1、本文提及的OTA指的是android手机的基础操作系统、系统分区上安装的只读应用和/或时区规则的无线下载 (OTA) 更新。根据升级方式不同,分为:A/B(无缝)系统更新(android O新增)、 传统的非 A/B 系统更新、 时区规则更新(...
2019-07-27 15:10:06
5716
原创 android P 锁屏初探 —— 4 解锁流程
理解了**锁屏流程**,再来看一看解锁流程。1、上滑解锁流程:由于锁屏界面是灭屏时构建并显示的,所以亮屏后就能直接看到锁屏界面啦。再来一张指纹解锁流程:...
2019-07-22 20:54:53
3103
原创 android P 锁屏初探 ——2 开机显示锁屏界面的流程
第一次做流程图,做的不太规范,见谅,见谅。具体的流程介绍,可以参看这篇文章。 Android8.1 SystemUI Keyguard之启动流程有一点需要补充一下,系统首次开机是不显示锁屏界面的。原因应该是下面部分:(KeyguardViewMediator.java) private void handleSystemReady() { synchronized...
2019-07-18 19:06:23
1648
1
原创 android P 锁屏初探 ——1 锁屏的结构与流程概述
锁屏其实一直都是SystemUI的一部分,只是android5.0之前,它是单独编译成java静态库,作为SystemUI的依赖使用的。网上关于Java静态库的介绍比较多,这里就不详述啦。锁屏的结构:锁屏大致分为两部分,第一部分是手机亮屏之后直接能看到的界面。称为非安全锁屏界面,这个界面其实包含在SystemUI的notificationPanelView的布局中,根据手机是否处于锁屏状态调整...
2019-07-17 20:59:38
1406
原创 SystemUI_Recents界面滑动偶尔卡住不动
故事是这样事儿的:刚入职不久,leader就分给我一个bug让我研究研究。Bug:查看最近任务时,有时上滑或下滑的时候,tp有报点,但应用界面未执行响应动画。当时对SystemUI不怎么了解,看了bug后一脸懵逼。过了两天,leader又来消息啦,没什么思路的话就提MTK EService吧。一阵喜悦涌上心头,这个我会啊!几分钟操作,case提交成功。没想到,故事才刚刚开始。MTK 沟通了...
2019-07-16 19:26:01
659
原创 《Android开发艺术探索》阅读笔记(一)、activity生命周期 及 启动模式
一、Activity生命周期分类正常情况下的生命周期:即在有用户参与的情况下,activity所经历的生命周期的变化。 异常情况下的生命周期:即Activity被系统回收或者由于当前设备的Configuration发生改变而导致Activity被销毁并重建的过程。(一)、正常情况下的生命周期经历7个方法,过程如下图: 注意: 1、onStart和onResume都表示activity已经可见,但
2017-01-17 17:26:59
444
转载 Android 日常开发总结的技术经验 60 条
全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效。2.数据库表段字段常量和SQL逻辑分离,更清晰,建议使用Lite系列框架LiteOrm库,超级清晰且重心可以放在业务上不用关心数据库细节。全局变量放全局类中,模块私有放自己的管理类中,让常量清晰且集中.不要相信庞大的管理类的东西会带来什么好处,可能是
2017-01-17 10:55:28
327
转载 Context 都没弄明白,还怎么做 Android 开发?
作者:Larry 链接:https://zhuanlan.zhihu.com/p/24847247 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Activity mActivity =new Activity()作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言,Activity
2017-01-17 10:39:04
467
原创 android开发——.so文件相关知识点
一、为什么你需要重点关注.so文件如果项目中使用到了NDK,它将会生成.so文件,因此显然你已经在关注它了。如果只是使用Java语言进行编码,你可能在想不需要关注.so文件了吧,因为Java是跨平台的。但事实上,即使你在项目中只是使用Java语言,项目中依赖的函数库或者引擎库里面已经嵌入了.so文件(比如百度地图sdk就提供了各种.so文件)Android应用支持的cpu架构取决于APK中位于lib
2016-12-16 09:36:16
1077
原创 IDEA创建基于maven的java web工程(IDEA版本2016.3)
一、创建新工程的时候选择maven工程(此版本的IDEA自带maven插件,无需另外安装maven,也无需配置maven环境变量) 注意:因为国内普遍的网络访问障碍,这里就不要在create from archetype处打勾了。 下一步处填写groupID和artifactID。(类似于报名和工程名,后面的工程名会根据这里自动填充)二、工程创建好以后,目录解构非常简单 我们要做的是在工程根目
2016-12-13 23:31:55
1735
原创 Java 多态:动态绑定 及 内部实现机制
Java多态机制的实现依赖于其动态绑定。 (本文默认读者已经了解Java程序的编译和运行时问题。)1、程序绑定的概念 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。 对Java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定。2、静态绑定与动态绑定(1)静态绑定: 在程序执行前方法已经被绑定到具体的类,由编译器或其它连接程序实现。例如:C语言。 Jav
2016-12-07 15:25:41
693
原创 自己MarkDown编辑中使用的一些东西
1、字体、字号与颜色<font face="黑体">我是黑体字</font><font face="微软雅黑">我是微软雅黑</font><font face="STCAIYUN">我是华文彩云</font><font color=#0099ff size=7 face="黑体">color=#0099ff size=72 face="黑体"</font>各种颜色的链接博客:http://
2016-12-07 11:24:36
352
转载 Android Studio解决导入项目非常慢的问题
Android Studio比Eclipse ADT有巨大的优势。Android Studio原生支持使用Gradle来构建项目,使用动态语言Groovy定义项目构建的过程,避免了build.xml文件繁琐的定义。然而使用的时候,却有着巨大的缺陷: 由于Android Studio在升级的时候,可能会伴随着Gradle版本的升级,Gradle就会产生若干的版本。 为了保证程序不会因为Gradle
2016-12-02 10:56:59
405
原创 EventBus与RxJava使用与分析(陆续更新中)
(声明: 本文不是讲RxJava及响应式编程的各种详细知识的。 博文主要是我学习过程的记录及搜集的资料的记录及其阅读顺序的总结,再就是资料中没有看到,自己通过源码及实践总结的一些散碎知识点。)android中观察者模式的使用也蛮重要的。 sdk中的Observable 和Observer,EventBus,RxJava等都能很好的实现观察者模式。 首先是继承自Java的Observa
2016-11-30 14:18:06
1572
转载 android 处理运行时变更
有些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性及语言)。 发生这种变化时,Android 会重启正在运行的 Activity(先后调用 onDestroy() 和 onCreate())。重启行为旨在通过利用与新设备配置匹配的备用资源自动重新加载您的应用,来帮助它适应新配置。要妥善处理重启行为,Activity 必须通过常规的Activity 生命周期恢复其以前的状态,在 A
2016-11-01 11:01:12
394
原创 Android Studio中进行NDK开发(android studio 2.2 及 CMake)
Studio在使用C++等native代码方面做出了新的尝试,感觉更方便了。现在把使用方式记录如下:一、下载NDK及新的构建工具CMakeStudio引入了新的Native代码构建工具,可以帮助打包成.SO文件 并提供给gradle打包的apk文件中。如下图,选中CMake LLDB 及NDK,进行下载即可。二、创建新的支持C/C++代码的工程这个其实很简单
2016-10-27 13:34:58
1089
原创 防止按钮短时间内重复点击
类的主内容:public class EnableDelayUtil { private static Handler handler = new Handler(); private static ArrayList myRunnableList = new ArrayList; private static ArrayList viewList = new Ar
2016-10-10 09:46:21
622
转载 探秘Java中String、StringBuilder以及StringBuffer
相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲: 一.你了解String类吗? 二.深入理解String、StringBuffer、StringBuilder 三.不同场景
2016-09-06 18:13:00
569
转载 Java并发编程:Lock
在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synchroni
2016-09-05 11:52:00
402
转载 Java并发编程:Thread类的使用
一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解。 线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。
2016-09-03 11:32:03
490
原创 android日期选择控件DatePicker小结
最近手上的项目要求弄一个包含两个日期选择控件的UI界面(即开始时间和结束时间)。一、一开始就想到使用自带的DatePicker控件。但是发现其UI很难调整到项目想要的效果。尤其是其与项目theme的关系,在xml中设置style也不好使。从Popwindow到AlertDialog都试过了,只有含单个DatePicker的DateAlertDialog还比较赏心悦目,却不满足项目需要。
2016-07-21 14:43:05
5942
转载 java 并发编程:线程间的协作 wait()+notify()/notifyall() 和 Condition
线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态。然后等待消费者消费了商
2016-07-14 14:07:47
438
转载 java 多线程总结(二) 线程阻塞的方法
1.join()join —— 让一个线程等待另一个线程完成才继续执行。如A线程执行体中调用B线程的join()方法,则A线程被阻塞,直到B线程执行完为止,A才能得以继续执行。 1 public class ThreadTest { 2 3 public static void main(String[] args) { 4 5 MyRunnab
2016-07-13 17:56:52
6689
转载 java并发: volatile 关键字 完全解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们
2016-07-13 17:41:34
418
转载 java 多线程总结(一) 创建线程的几种方法及对终止线程运行的讨论
多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。一.线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图:上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入
2016-07-13 15:44:06
5248
转载 java-类型转换小结
Java中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身影。Java中的类型转换在Java编码中具有重要的作用。首先,来了解下数据类型的基本理解:数据是用来描述数据的种类,包括其值和基于其值基础上的可进行的操作集合。Java中数据类型主要分为两大类:基本数据类型和引用数据类型。基本数据类型共有8种,分别
2016-07-13 14:28:09
424
原创 一个view内部的事件分发机制的分析总结
在Android中你只要触摸控件首先都会触发控件的dispatchTouchEvent方法(其实这个方法一般都没在具体的控件类中,而在他的父类View中),所以我们先来看下View的dispatchTouchEvent方法,如下:/** * Pass the touch screen motion event down to the target view, or this * vie
2016-06-24 11:28:19
311
原创 关于android studio底部的几个图标的作用
如上图底部红色框内的部分:1、最左侧的小显示屏图标,这个是用来隐藏屏幕边框部分的各种tool window的。用鼠标点击几次就知道作用了。而且,在隐藏掉这些window后,双击键盘的alt键并按住,就可以临时查看到它们。2、最右侧的小人头图标。这里面包含了关于代码等Lint自动检测的内容。点击打开的窗口是这样的:
2016-06-24 09:34:48
5569
原创 自定义view 小圆点随手指滑动
package com.example.abc.myfirstapplication.SelfView;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graph
2016-06-23 14:22:24
1256
原创 实现SwipeMenuListView特定item的右滑menu无效
项目中增加需求:根据不同来源的数据,修改展示页面及响应。对于之前的数据来源,定为“来源一” 新的特殊数据来源,定为“来源二”一、对SwipeMenuListView的研究及修改 通过之前转的关于SwipeMenuListView源码的解析 及自己对源码的阅读,发现数据展示页面右滑出现的menu的样式的修改可以通过adapter的
2016-06-20 15:31:18
3439
原创 使用ViewPager实现左右循环滑动及轮播效果
吃水不忘挖井人:本文修改自博客:http://www.cnblogs.com/kobe8/p/4343478.html读了上文感觉思路挺不错的,但是实践的时候发现了一些问题。比如,打开应用时banner并没有自动开始轮播,因为handler中的if判断把消息给吃掉了。由此,我感觉这种处理方式并不是很好,出现重复发消息的问题,又通过其它方式来删除掉这些消息。。。我对代码做了一
2016-06-16 18:08:16
587
原创 对Hongyang大神文章《Andoird 自定义ViewGroup实现竖向引导界面》的阅读笔记
项目中有这种页面需求,正好hongyang大神的文章比较吻合,就仔细阅读了一下。其中做了一些自己的理解性注释:1、原文链接:http://blog.csdn.net/lmj623565791/article/details/236924392、效果:3、布局类的源码及注释:public class VerticalLinearLayout e
2016-06-16 14:58:05
602
转载 SwipeMenuListview源码解析
SwipeMenuListView 是一个像 Android QQ 那样在 ListView 中拉出菜单的开源库。SwipeMenuListViewSwipeMenuListView 是一个很棒的 ListView 控件,但是现在作者已经没有维护了。使用添加依赖123dependencies { compil
2016-06-15 10:34:40
2314
原创 对XListView 原理的理解
一、从用户操作角度分析源码的组成XListView是一个很不错的实现了下拉及上拉刷新的listview控件,虽然已经停止维护了,但其基本功能还是被不少app在使用的。既然要实现上拉及下拉刷新,就以下拉为例来讨论一下:首先,下拉是用户的一个动作,用户按住屏幕后手指下移一定距离后再抬起手指,这是listview顶端出现额外的提示内容,当移动距离达到一定条件,就允许刷新动作。同时,listv
2016-06-13 08:58:44
2433
转载 Java设计模式透析之 —— 单例(Singleton)
写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据。但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像findbugs等代码检查工具还会认为使用System.out.println()是一个bug。 为什么作为Java新手神器的System.out.println(),到了真正项目开发当中会被唾弃呢?其
2016-06-08 09:53:53
305
《Python核心编程 第二版》
2015-10-20
Android Studio 1.0版安装教程参考
2015-04-14
人事工资管理系统
2011-12-10
代码之美(含中文版英文版)
2011-12-03
C语言缺陷与陷阱(笔记)
2011-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人