自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shenxiaolinil的专栏

记录开发中遇到的点滴--主要还是解决问题的个人经验

  • 博客(41)
  • 收藏
  • 关注

原创 Android框架设计-模块化系列

1. 模块化、插件化和组件化的由来2. 插件化和模块化的本质区别(图文)

2020-03-22 17:24:07 182

原创 组件化和插件化的区别

提起组件化和插件化的区别,有一个很形象的图:上面的图看上去似乎比较清晰,其实容易导致一些误解,有下面几个小问题,图中说的就不太清楚:组件化是一个整体吗?去了头和胳膊还能存在吗?左图中,似乎组件化是一个有机的整体,需要所有器官都健在才可以存在。而实际上组件化的目标之一就是降低整体(app)与器官(组件)的依赖关系,缺少任何一个器官app都是可以存在并正常运行的。 头和胳膊可以单独存在吗...

2020-03-22 17:20:04 1471

原创 模块化、插件化和组件化

模块化、插件化和组件化的关系在技术开发领域,模块化是指分拆代码,即当我们的代码特别臃肿的时候,用模块化将代码分而治之、解耦分层。具体到 android 领域,模块化的具体实施方法分为插件化和组件化。插件化和组件化的区别一套完整的插件化或组件化都必须能够实现单独调试、集成编译、数据传输、UI 跳转、生命周期和代码边界这六大功能。插件化和组件化最重要而且是唯一的区别的就是...

2020-03-22 17:03:03 416

原创 架构师职责范围

第一个问题:什么是架构师?工作目标:1. 参与产品评估,功能规划和讨论,并根据项目需求进行实施和发布。2. 参与审查开发过程,估算人员计划,协助控制开发成本,确定开发标准和绩效要求。3. 负责需求的分析、系统体系结构的设计和实施,并主要负责代码的质量。4. 负责架构问题的分析和解决,以及安卓系统的优化和稳定性维护。5. 负责向客户解释该软件的核心功能。为其他部门提供技术指导。向开发人员解释专业知识。6. 研究和开发新技术,以满足智能驾驶舱产品需求的迭代更新。

2023-03-11 12:05:44 473

原创 Android Binder机制之一(简介)

这是本人第N次看Binder 相关知识了,其实每次看都有新的收获,终于下决心做个专题整理,由于个人系统知识面欠缺,加上Binder本身就错综复杂,如有什么不对或者纰漏,欢迎一起讨论指出。

2023-02-10 17:17:25 1171

原创 AOSP 8.0 系统启动之五systemserver启动(三)

通过之前进程启动系列文章从Init到Zygote一路启动到SystemServer的过程。SystemServer是Android系统中重要的进程,系统中主要的服务驻留在其中:常见的比如WindowManagerServer(WMS),ActivityManagerService(AMS),

2023-02-07 11:20:17 511

原创 AOSP 8.0 系统启动之五systemserver启动(二)

上一篇文章已经将systemserver进程创建出来,接下去重点分析下在核心服务创建前的一些初始化主要内容,包括设置线程异常处理以及和binder驱动建立连接,创建binder线程, 还有通过反射找到SystemServer类

2023-02-07 09:54:20 532

原创 AOSP 8.0 系统启动之五systemserver启动(一)

SystemServer就是系统用来启动Framework核心service的入口,如AMS,PMS,WMS等。Android系统在启动的时候, 在启动两个重要的进程,一个是zygote进程另一个是由zygote进程fork出来的system_server进程;

2023-02-07 00:09:41 413

原创 AOSP 8.0 系统启动之四ART虚拟机启动(二)

上一章节已经梳理了通过加载libart.so, JNI_CreateJavaVM成功返回,虚拟机就处于就绪状态了,可以接受jni调用了。虚拟机分为java和native两个层面,这两层间的通信就是jni,通常虚拟机的创建和管理都是在native层,然后通过jni来与java层互访,会有一个JNIEnv类型的指针变量,就是pEnv,他是以指向指针的指针做为参数的。这个JNIEnv指针是访问JVM的关键,真正的实现是JNIEnvExt。涉及源码。

2023-02-06 15:58:39 717

原创 AOSP 8.0 系统启动之四ART虚拟机启动(一)

Dalvik虚拟机和ART虚拟机Dalvik虚拟机,基于apache的JVM 改进而来,为Android 第一代虚拟机。在Android 4.4之前使用。ART 虚拟机,也叫ART 模式,是第二代虚拟机,Android 4.4推出,并从5.0开始默认使用执行程序。两者区别:Dalvik每次都要将apk代码编译成机器码再运行,Art只会首次启动编译,而不必每次运行都要先编译一次。Art占用空间比Dalvik大,首次安装Apk的时间比Dalvk模式长。

2023-02-05 22:38:32 803

原创 AOSP 8.0 系统启动之三--Zygote启动(二)

虚拟机创建完成后,接下去就可以用JNI反射调用Java了,其实接下来的语法用过JNI的都应该比较熟悉了,直接是CallStaticVoidMethod反射调用ZygoteInit的main函数,开始进入Java世界;

2023-02-05 14:49:35 718

原创 AOSP 8.0 系统启动之三Zygote启动(一)

在上一篇中我们讲到,init进程会解析.rc文件,然后得到一些service去启动,这些service通常不是普通的服务,文档里面的称呼是daemon(守护进程).所谓守护进程就是这些服务进程会在系统初始化时启动,并一直运行于后台,直到系统关闭时终止,并不会主动结束进程. 我们本篇讲的zygote进程就是其中之一。zygote进程包含两个阶段,第一阶段是Native(C/C++)阶段主要负责创建Java虚拟机,JNI注册等,

2023-02-05 08:52:41 682

原创 AOSP 8.0 系统启动之二init启动(三)

init经过前两个阶段后,已经建立了属性系统和SELinux系统,设置子进程的死亡监听,但是最关键的部分,就是init进程还需要执行启动许多关键的系统服务,但是如果都是像属性系统和SELinux系统那样一行行代码去做,显得有点杂乱繁琐,而且不容易扩展,所以Android系统引入了init.rcinit.rc是init进程启动的配置脚本,这个脚本是用一种叫Android Init Language(Android初始化语言)的语言写的,

2023-02-04 22:15:00 758

原创 AOSP 8.0 系统启动之二init启动(二)

上一篇中讲了init进程的第一阶段,我们接着讲第二阶段,主要有以下内容创建进程会话密钥并初始化属性系统进行SELinux第二阶段并恢复一些文件安全上下文新建epoll并初始化子进程终止信号处理函数设置其他系统属性并开启系统属性服务本文涉及到的文件。

2023-02-03 16:01:01 744 1

原创 AOSP 8.0 系统启动之二init启动(一)

它的源码在platform/system/core/init/init.cpp。之前我们讲过init进程是用户空间的第一个进程,我们熟悉的app应用程序都是以它为父进程的,init进程入口函数是main函数,这个函数做的事情还是比较多的,主要分为三个部分init进程第一阶段init进程第二阶段init.rc文件解析由于内容比较多,所以对于init的讲解,计划分为三个章节来讲,本文只讲解第一阶段,第一阶段主要有以下内容挂载文件系统并创建目录初始化日志输出、挂载分区设备。

2023-02-03 14:21:55 216

原创 AOSP 8.0 系统启动之一内核启动

Android本质上就是一个基于Linux内核的操作系统,与Ubuntu Linux、Fedora Linux类似,我们要讲Android,必定先要了解一些Linux内核的知识。Linux内核的东西特别多,相关的知识体系许多也不太理解,由于本文主要讲解Android系统启动流程。

2023-02-03 08:10:32 549

原创 AOSP 8.0 系统启动概要

​​​​​​​是由zygote孵化而来的,是zygote的首席大弟子,托起整个Java framework的所有service,比如ActivityManagerService, PowerManagerService等等。idle进程:是Linux系统第一个进程(pid = 0 ),是init进程和kthreadd进程的父进程。zygote进程 : 是所有上层Java进程的父进程,另外zygote的父进程是init进程。init进程 : 是所有用户进程的父进程(或者父父进程)

2023-02-03 07:36:42 394

原创 java集合框架02——Collection架构与源码分析

Collection是一个接口,它主要的两个分支是List和Set。如下图所示: List和Set都是接口,它们继承与Collection。List是有序的队列,可以用重复的元素;而Set是数学概念中的集合,不能有重复的元素。List和Set都有它们各自的实现类。为了方便,我们抽象出AbstractCollection类来让其他类继承,该类实现类Collection中的绝...

2020-03-31 08:17:13 119

原创 Java集合框架02——线程安全的集合详解

一、早期线程安全的集合我们先从早期的线程安全的集合说起,它们是Vector和HashTable1. Vector Vector和ArrayList类似,是长度可变的数组,与ArrayList不同的是,Vector是线程安全的,它给几乎所有的public方法都加上了synchronized关键字。由于加锁导致性能降低,在不需要并发访问同一对象时,这种强制性的同步机制就显得多余,所...

2020-03-31 07:01:37 446

原创 Java集合框架01——总体框架一览

java集合框架是java提供的工具包,在java.util.*中,这个包中包含了常用的数据结构:集合、数组、链表、栈、队列、映射等。java集合框架主要可以分为四个部分:List列表、Set集合、Map映射和工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。 java集合框架示意图如下: 从图中可以看出,ja...

2020-03-31 06:51:17 197

原创 Android开发之移动端项目架构演化之路 从模块化,组件化再到插件化

项目架构前言 单工程架构 模块化 组件化 插件化 总结前言其实在移动端谈架构,可能没有在Web端谈架构更合适,因为大多数情况下移动端的项目不会很大;那为什么还要谈下呢?毕竟麻雀再小也是五脏俱全嘛通过合适的架构,能让项目的代码更加优美,结构更加清晰,编译效率更高,维护更加简单,人员更替导致的开发成本更低今天不从狭义上谈项目架构,比如MVC,MVP,MVVM等;我们从...

2020-03-24 09:24:21 690

原创 组件化相关文章

总结一波组件化的实现方案优缺点https://juejin.im/entry/5aa1240b6fb9a028dc409a34美团猫眼电影android模块化实战https://www.jianshu.com/p/d372cc6802e5Android彻底组件化demo发布https://www.jianshu.com/p/59822a7b2fadhttps://github.com/mq...

2020-03-24 06:59:39 163

转载 ListView和GridView滑动到顶部和底部时出现的阴影消除方法

ListView和GridView滑动到顶部和底部时出现的阴影消除方法:android2.3以前用android:fadingEdge="none"android2.3以后用setOverScrollMode(View.OVER_SCROLL_NEVER) 原文链接地址:http://www.eoeandroid.com/thread-286953-1-1.html

2013-06-20 15:15:27 19227

原创 Android,UI主线程与子线程 handler,thread使用

在一个Android 程序开始运行的时候,会单独启动一个Process。默认的情况下,所有这个程序中的Activity或者Service(Service和 Activity只是Android提供的Components中的两种,除此之外还有Content Provider和Broadcast Receiver)都会跑在这个Process。        一个Android 程序默认情况下也只

2011-12-19 09:31:49 4340

原创 根据AnalogClock(时针),增加了显示秒针的widget

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <c

2011-11-28 15:01:40 7389 2

原创 悬浮框的显示以及隐藏,有点类似与mediaController

public void show(int timeout) { if (!isshow) { if (pauseBtn != null) { pauseBtn.requestFocus(); } showTopLayout(); showBootomLayout(); isshow = true; } } /**显示头部*/pr

2011-11-25 16:58:30 8979

原创 关于悬浮框的延迟消失,采用handler的消息机制

延迟消失, 第一种就是handler中的send message(what)机制,   先是实力化handler对象,然后重写handleMessage方法。private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) {///接受消息的并且根据具体

2011-11-25 16:51:29 7404

转载 android 关于shape渐变的使用

转于    http://www.iteye.com/topic/1117635  这位高人在实现背景渐变的帖子里http://androidturing.iteye.com/blog/1238909有朋友建议看看shape的用法,确实很有帮助。这里我偷懒转一篇比较详细的帖子,和大家一起进步~!Android中常常使用shape来定义控件的一些显示属性,今天看了

2011-11-17 10:53:14 10700

转载 android 中关于animation的正确使用

Android动画开发——Animation动画效果Android开发,动画效果动画类型Android的animation由四种类型组成XML中 alpha渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果rotate画面转移旋转动画效果

2011-11-17 10:36:28 2626 1

原创 关于mediaPlayer的正确使用

package com.android.test;import java.io.File;import android.app.Activity;import android.media.MediaPlayer;import android.os.Bundle;import android.os.Environment;import android.view.Key

2011-11-17 10:00:55 827

原创 ApiDemo学习之CreateBitmap以及 Paint类介绍

private static final int WIDTH = 50; private static final int HEIGHT = 50; private static final int STRIDE = 64; // must be >= WIDTH /** * 创建颜色数组,ARGB8888,每一个颜色值都介于(0,255)

2011-11-15 10:08:55 4101

转载 Apidemo学习之ColorFilter(颜色过滤器)

转载于       http://yueguc.iteye.com/blog/7824941.使用ColorFilter     MaskFilter是对一个Paint的alpha通道的转换,而ColorFilter则是对每一个RGB通道应用转换 。所有由ColorFilter所派生的类在执行它们的转换时,都会忽略alpha通道。Android包含三个ColorFilter:Col

2011-11-15 09:38:44 3910

原创 ApiDemo学习之Cilpping(剪切)

private static class SampleView extends View { private Paint mPaint; private Path mPath; public SampleView(Context context) { super(context); set

2011-11-15 09:24:36 917

原创 Apidemo学习之AnimateDrawables(跑马灯效果)

private static class SampleView extends View { private AnimateDrawable mDrawable; public SampleView(Context context) { super(context); setFocusable(true);

2011-11-14 17:31:07 3420

转载 ApiDemo学习之AlphaBitmap

转载于--- http://yueguc.iteye.com/blog/781659 private static class SampleView extends View { private Bitmap mBitmap; private Bitmap mBitmap2; private Bitmap mBitmap3;

2011-11-14 16:21:44 2888

原创 根据输入框的输入内容的不同,来检索本地通讯录,是按照姓名,还是手机号码!

login.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:lay

2011-11-03 18:34:19 4528

原创 获取contact通讯录中的的拼音字段~~~~!!!按照拼音检索~

/** * increase pinyin field from phones table * * @return */ public boolean load3() { mLoading = true; boolean bOK = false; Cursor managedCursor = null; final List contactsC

2011-11-01 17:25:35 5385

原创 SharedPreferences的使用~读取,或者存储!

1.保存操作/** * 保存用户第一次登录的用户名以及密码 * * @param userName * 用户名 * @param passWord * 密码 */ public static void saveFristPreferences(String userName, String passWo

2011-11-01 17:16:24 2260

原创 自定义dialog,调用系统的短信,邮件界面~!~

!!!!!!!!显示自定义的对话框!!!!!!!public static void showInviteDialog(Context context, int icon, String title, String msg, String positiveText, DialogInterface.OnClickListener positive, String negativeT

2011-11-01 17:00:46 5069 3

原创 android XML 文件解析~SAX方式!

1.首先/////////////////////获取xml文件,在assert文件夹目录下面!private void parseXml() { InputStream setxmlStream = null; try { setxmlStream = NgnApplication.getContext().getAssets().open( "set.xml

2011-11-01 16:45:49 2275

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除