自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shbj的博客

本人也是菜鸟一个,不足之处欢迎指出,大家一起交流、进步

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

原创 Activity启动流程2

在应用程序内启动同进程内的Activity1、onClick @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_sub: Intent intent = new Intent(); intent.setAction("com.shbj.action.action.sub1");

2022-05-05 21:36:23 251

原创 Activity启动流程1

从Launcher启动页启动Activity1、startActivitySafelypackages\apps\Launcher2\src\com\android\launcher2\Launcher.java void startActivitySafely(Intent intent, Object tag) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//启动标志位设置为NEW_TASK以便activity可以在一个新

2022-05-05 21:35:20 287

原创 Framework层ServiceManager代理对象获取过程

ServiceManager public static IBinder getService(String name) { try { IBinder service = sCache.get(name); if (service != null) { return service; } else { return getIServiceManag

2022-05-05 21:32:54 218

原创 Service代理对象的获取过程

Service代理对象的获取过程Service组件将自己注册到ServiceManager中后,它就在server进程中等待client进程将进程间通信请求发送过来。client进程为了和service组件通信,首先需要通过ServiceManager的service组件查询服务,得到service组件的一个代理对象。为了创建一个FregService代理对象,即BpFregService对象,首先要通过binder驱动程序来获得一个引用了运行在FregServer进程中的FregService组件的b

2022-05-05 21:31:20 787

原创 ServiceManager添加service组件过程

FregServiceint main(int argc, char **argv){ FregService::instantiate();//创建FregService组件 ProcessState::self()->startThreadPool();//启动一个binder线程池 IPCThreadState::self()->joinThreadPool();//将主线程也加入到binder线程池 return 0;}static void instantiate(){

2022-05-05 21:29:53 1161

原创 Java 单例模式

1.饿汉式//饿汉式,可能会浪费内存空间class Hungry { private final static Hungry INSTANCE = new Hungry(); public final static Hungry getInstance() { return INSTANCE; } private Hungry() { }}2.懒汉式1.双重检测锁(DCL)//懒汉式,DCL双重检测锁。在反射下不安全class

2022-02-08 18:20:48 46

原创 Java 单例模式

1.饿汉式//饿汉式,可能会浪费内存空间class Hungry { private final static Hungry INSTANCE = new Hungry(); public final static Hungry getInstance() { return INSTANCE; } private Hungry() { }}2.懒汉式1.双重检测锁(DCL)//懒汉式,DCL双重检测锁。在反射下不安全class

2022-02-08 18:18:40 42

原创 Java 单例模式

1.饿汉式//饿汉式,可能会浪费内存空间class Hungry { private final static Hungry INSTANCE = new Hungry(); public final static Hungry getInstance() { return INSTANCE; } private Hungry() { }}2.懒汉式1.双重检测锁(DCL)//懒汉式,DLC双重检测锁。在反射下不安全class

2022-02-08 18:17:06 43

原创 Java 单例模式

1.饿汉式//懒汉式,DLC双重检测锁。在反射下不安全class Lazy{ private static Lazy INSTANCE; public static Lazy getInstance(){ if (INSTANCE == null){//如果不为null,就直接返回INSTANCE,不用在进行加锁操作 synchronized (Lazy.class){ if (INSTANCE == null){

2022-02-08 18:14:58 282

原创 Linux进程间通信

进程间通信1.管道1.方法 #include <unistd.h> int pipe(int pipefd[2]);管道是半双工的,只能在具有公共祖先的进程间使用。pipefd[2]:传入大小为2的int数组,返回两个文件描述符,pipefd[0]为读端,pipefd[1]为写端。2.实例1.创建一个管道,用于父子进程间数据传输。#include <stdio.h>#include <stdlib.h>#include <unist

2022-01-23 23:50:47 409

原创 内存映射简单使用

mmap()的简单使用及注意要点

2022-01-13 02:19:45 461

原创 Linux线程同步

Linux线程同步1.互斥量确保同一时间只有一个线程访问数据。pthread_mutex_t mut;//两种初始化方法mut = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_init(&mut, NULL);1.初始化int pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexa

2022-01-08 18:06:32 1682

原创 Linux线程的终止

Linux线程的终止1.线程终止的三种情况。线程从启动例程中简单返回(return)。线程被同一进程中的其它线程取消。线程调用pthread_exit()方法。1.线程终止,并返回数据。void pthread_exit(void *retval);2.取消线程。 int pthread_cancel(pthread_t thread);3.线程清理处理程序。void pthread_cleanup_push(void (*routine)(void *),void *arg);

2022-01-03 00:18:53 2455

原创 Linux线程的简单使用

Linux线程的简单使用#include <pthread.h>CFLAGS+= -pthreadLDFLAGS+= -pthread1.线程创建int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);//(线程id, 线程属性,线程要执行的方法,传入方法的参数)2.线程退出void pthread_exit(void

2022-01-03 00:18:06 836

原创 Linux进程用户id与文件特殊权限的关联

一、u+s的作用u+s用于可执行的二进制文件,表示进程在执行该文件时,进程的有效用户id(euid)为文件的所有者id。#include <stdio.h>#include <stdlib.h>#include <unistd.h>static void print_uid(){ long ruid, euid; ruid = getuid();//get real uid euid = geteuid();//get effectiv

2021-11-20 22:38:02 484

原创 SparseArray源码分析

SparseArray源码分析在SparseArray中key数组和value数组中,它们的下标是一一对应的。1.构造函数可以看出SparseArray中的key和value分别存在不在不同的数组中,并且初始容量为10。private int[] mKeys;//key数组private Object[] mValues;//value数组private int mSize;//大小private static final Object DELETED = new Object();//val

2021-08-23 23:32:11 108

原创 HashMap源码分析

HashMap源码分析(Java8)一、put()Map map = new HashMap();map.put("one", 1);1.默认值和重要参数 /** * The load factor used when none specified in constructor. 默认加载因子0.75 */ static final float DEFAULT_LOAD_FACTOR = 0.75f; /** * The defau

2021-08-22 23:04:06 69

原创 Git笔记

Git笔记参考书目1.Git简介1、三种状态已修改,表示修改了文件,但还没保存到数据库中。已暂存,表示对已修改文件的当前版本做了标记,使之包含在了下次提交的快照中。已提交,表示数据已经安全的保存在了本地数据库中。2.Git项目的三个阶段工作区,暂存区以及Git目录(本地仓库)。工作区,是对项目某个版本独立提取出来的内容。暂存区,是一个文件,保存了下次将要提交的文件列表信息,一般在Git目录仓库中。Git仓库目录,是Git用来保存项目的元数据和对象数据库的地方。这是Git最重要的部分,

2021-05-19 15:58:22 153

原创 Android文字基线

Android文字基线1、设置画笔[^code 1]:private val mText = "ABCDefg"mTextPain = Paint(Paint.ANTI_ALIAS_FLAG)mTextPain.color = Color.BLACKmTextPain.textSize = sp2px(50f)2、获取文字的宽高[^code 2]:val bounds = Rect()mTextPain.getTextBounds(mText, 0, mText!!.length,

2021-05-13 23:08:45 234

原创 Kotlin集合笔记

集合1.集合的分类list:是一个有序集合,通过索引来访问集合元素。元素可以在集合中出现多次。set:集合中的元素是唯一的,一般来说set集合中的元素顺序并不重要。map:是一组键值对,键是唯一的,每个键刚好映射到一个值,值是可以重复的。2.集合的类型kotlin标准库提供了基本集合类型的实现:set、list以及map。分为只读类型和可变类型。只读类型是“型变“的,可变集合不是“型变”的。map在值(value)类型上是型变的,在键(key)类型上是不型变的。 val list:Li

2021-05-11 18:51:51 290

原创 Kontlin泛型笔记

泛型1.Java中的泛型不是型变的。package com.shbj.kotlin5;import java.util.ArrayList;import java.util.List;class P{}class C1 extends P{}class C2 extends P{}class CC1 extends C1{}List<P> list1 = new ArrayList<C1>();//error编译器异常2.Java中的数组是型变的。P[]

2021-05-06 19:28:41 156

原创 自定义RecyclerView实现下拉刷新和上拉加载(第一种实现方式)

说明:该自定义RecyclerView只适用于layoutManager为LinearLayoutManager的情况,使用的还是RecyclerView.Adapter。效果图使用1、编写layout文件&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;com.shbj.refreashrvdemo.ui.RefreashRecyclerView...

2018-04-05 01:04:33 4408

原创 自定义StepView,仿外卖配送进度

效果图使用可在layout文件下设置以下属性。&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;resources&gt; &lt;declare-styleable name="StepView"&gt; &lt;attr name="step_size" format="dimension

2018-03-17 22:52:27 675

空空如也

空空如也

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

TA关注的人

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