每个片段都值得深深纪念、
码龄9年
关注
提问 私信
  • 博客:76,083
    76,083
    总访问量
  • 36
    原创
  • 1,602,460
    排名
  • 84
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2015-09-01
博客简介:

每个片段都值得深深纪念

查看详细资料
个人成就
  • 获得20次点赞
  • 内容获得1次评论
  • 获得80次收藏
创作历程
  • 2篇
    2022年
  • 2篇
    2020年
  • 1篇
    2019年
  • 7篇
    2018年
  • 24篇
    2017年
成就勋章
TA的专栏
  • 安卓源码分析
    24篇
  • 安卓11.0源码分析
    1篇
  • 安卓随笔
    1篇
  • Java基础篇
  • 安卓菜鸟入门之路
    2篇
  • C/C++
    4篇
兴趣领域 设置
  • 移动开发
    小程序
  • 设计模式
    uml
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

175人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

系统启动流程分析之SystemServiceManager的startService函数流程分析

在SystemServer的启动流程中,初始化了一个SystemServiceManager对象,然后使用这个对象的startService启动了多个服务对象,因此,今天我们单独将这个函数拎出来分析一下SystemServiceManager初始化SystemServiceManager的初始化时在SystemServer的run函数中// Create the system service manager.mSystemServiceManager = new SystemServiceManag
原创
发布博客 2022.01.19 ·
725 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

安卓源码中打印调用堆栈的方法

Native层打印调用堆栈首先,先进入需要添加堆栈的进程代码,并在其Android.bp中添加shared_libs libutilscallstackcc_library { name: "libbinder", ...... shared_libs: [ "liblog", "libcutils", "libutils", "libutilscallstack", ], ......}然后在对应的
原创
发布博客 2022.01.15 ·
639 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

ServiceManager添加的系统服务汇总

SystemServer.javaServiceManager.addService("sec_key_att_app_id_provider", new KeyAttestationApplicationIdProviderService(context));ServiceManager.addService("scheduling_policy", new SchedulingPolicyService());telephonyRegistry = new TelephonyRegistr.
原创
发布博客 2020.12.26 ·
1202 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

C基础文件输入输出操作之write和read函数

一、 write函数1 函数头文件<unistd.h>2 函数原型ssize_t write(int handle, void * buf, int len);3 参数说明handle----文件句柄,主要是通过open函数打开指定文件得到的对应指定文件的索 引void * buf----表明要写入指定文件的数据,如char *型字符数组int len----写入指定文件的数据大小(数据的长度)4 返回值说明返回写入指定文件操作的结果,代表实际写...
原创
发布博客 2020.11.12 ·
2806 阅读 ·
0 点赞 ·
0 评论 ·
7 收藏

C Prime Plus编程练习(第十一章)

1. 设计并测试一个函数,从输入中获取下n个字符(包括空白、制表符、换行符),把结果储存在一个数组里,它的地址被传递作为一个参数#include &lt;stdio.h&gt;#include &lt;string.h&gt;#define STRLEN 20int main(void) { char words[STRLEN]; int spaceNum = 0...
原创
发布博客 2019.01.09 ·
1483 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

C Prime Plus编程练习(第十章)

1. 修改程序清单10.7的rain.c程序,用指针进行计算(仍然要声明并初始化数组)/* * rain.c * 计算每年的总降水量、年平均降水量和5年中每月的平均降水量 */#include &lt;stdio.h&gt;#define MONTHS 12#define YEARS 5const float rain[YEARS][MONTHS] = { { 4.3, 4...
原创
发布博客 2018.12.05 ·
633 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

C Prime Plus编程练习(第二章)

1.#include &lt;stdio.h&gt;int main(void) { printf("Gustav Mahler
"); printf("Gustav
Mahler
"); printf("Gustav"); printf(" Mahler
"); return 0;}3.#include &lt;stdio.h&gt;int
原创
发布博客 2018.11.30 ·
697 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

C Prime Plus编程练习(第二章)

1.#include &lt;stdio.h&gt;int main(void) { printf("Gustav Mahler
"); printf("Gustav
Mahler
"); printf("Gustav"); printf(" Mahler
"); return 0;}3.#include &lt;stdio.h&gt;int
原创
发布博客 2018.11.30 ·
697 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

(O)Settings分析之主界面加载流程

1.    前言本篇主要是为了记录Settings主界面的加载流程,为以后深入分析和记录在Settings应用做准备2.    流程    2.1    Settings 文件分析    首先,我们要分析Settings应用主界面的加载工作,需要先确认哪个文件为此应用的主Activity,从AndroidManifest.xml文件中&lt;activity-alias andro...
原创
发布博客 2018.07.31 ·
2469 阅读 ·
5 点赞 ·
1 评论 ·
15 收藏

(O)Settings分析之DrawerLayout布局分析

DrawerLayout是添加在v4包中的一个布局类Google官方对于DrawerLayout的解释如下:DrawerLayout acts as a top-level container for window content that allows for interactive "Navigation Drawer.drawer" views to be pulled out f...
原创
发布博客 2018.07.31 ·
435 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(O)Telephony分析之通话流程分析(三)拨打电话流程分析(下)

三.Call的建立和传送先来看下代码static void processOutgoingCallIntent( Context context, CallsManager callsManager, Intent intent) { ...... // 拨打电话状态依旧为语音通话 final int videoS
原创
发布博客 2018.01.15 ·
2398 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

(O)Telephony分析之通话流程分析(二)拨打电话流程分析(上)

拨打电话,是从通话的拨号盘开始的,而拨号盘的界面是在DialpadFragment,因此,需要从这个地方进行分析一.拨号盘界面拨号流程public void onClick(View view) { ...... if (resId == R.id.dialpad_floating_action_button) { view.performHapticFee
原创
发布博客 2018.01.12 ·
3819 阅读 ·
0 点赞 ·
0 评论 ·
13 收藏

(O)Telephony分析之通话流程分析(一) TelecomManager的getTelecomService方法解析

这段时间,在研究Telephony相关的通话流程,虽然从书上看到通话流程,但是自己在分析Google 8.0的代码的时候,发现依旧有些复杂,现在就将自己的研究成果记录一下,以备后续查阅。一.TelecomLoaderService的初始化在此前的Android机器启动的流程中,分析过,SystemServer中启动系统的所有服务和进程,而在此文件中,我们会发现,TelecomLoaderS
原创
发布博客 2018.01.11 ·
1623 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

Android实现圆角背景点击效果

Android实现圆角背景点击效果
原创
发布博客 2017.11.28 ·
853 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ContentProvider分析(一)之TelephonyProvider的初始化

在Telephony分析系列中,我们分析过PhoneApp的启动,是通过ActivityThread中调用Instrumentation类的onCreate方法来逐步启动PhoneApp应用的,但是当我们在分析PhoneApp的时候,发现在PhoneGlobals的onCreate方法中,TelephonyProvider的数据库已经建立(在查找APN的相关数据的时候),那么TelephonyPr
原创
发布博客 2017.09.16 ·
1381 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

(N)Telephony分析(七)之DataConnection建立

在前面,我们分析过DcTracker的初始化的时候,我们有看过,在DcTracker的构造方法中,调用有如下这个方法private void registerForAllEvents() { mPhone.mCi.registerForAvailable(this, DctConstants.EVENT_RADIO_AVAILABLE, null); mPhone.mCi.re
原创
发布博客 2017.09.15 ·
3053 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

(N)Telephony分析(六)之DcTracker的requestNetwork分析

在PhoneApp的初始化中,我们分析到,TelephonyNetworkFactory的初始化,最终会调用到DcTracker的requestNetwork方法private void onNeedNetworkFor(Message msg) { NetworkRequest networkRequest = (NetworkRequest)msg.obj; boolean
原创
发布博客 2017.09.14 ·
1853 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

(N)Telephony分析(五)之DcTracker的初始化

DcTracker对象的初始化,需要从前文中进行分析,我们来看看其的初始化PhoneFactory.javapublic static void makeDefaultPhone(Context context) { ...... for (int i = 0; i < numPhones; i++) { Phone phone = null;
原创
发布博客 2017.09.14 ·
2426 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

(N)Telephony分析(四)之PhoneApp初始化分析

从上一篇中,分析到,调用了PhoneApp的onCreate方法,从此进入了PhoneApp的世界,那么就需要看看其onCreate方法中究竟做了什么public void onCreate() { if (UserHandle.myUserId() == 0) { // We are running as the primary user, so sh
原创
发布博客 2017.09.13 ·
1886 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

Eclipse编译项目出现问题

今天在使用eclipse编译项目时,出现如下的问题出现这个问题的原因是,在编译项目的时候,使用的buildtools为sdk最新的编译工具,只需要在project.properties文件中添加sdk.buildtools=23.0.1即可
原创
发布博客 2017.08.30 ·
763 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多