自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android地理围栏

地理围栏,如何在移动端运用地理围栏,以及如何结合地图进行地理围栏的图像展示,private void drawFence(GeoFence fence) { switch (fence

2022-09-22 09:02:07 1008 2

原创 Android地图集成以及基础功能

android 地图开发

2022-09-21 17:01:44 709

原创 调用系统相机、相册、剪裁图片,适配Android 12

Android 头像裁剪,头像选择,头像保存等,兼容android 12适配处理。

2022-09-13 13:43:31 4234 3

转载 Git仓库完全迁移

Git仓库完全迁移,包括所有的分支和标签,当然也包括提交日志。四行命令:git clone --mirror cd  git remote  set -url origin git push -f origin

2021-10-22 17:57:14 117

原创 车联网儿童模式架构设计

主要是HeadUnit(车载主机)与 RSE(后排座椅娱乐系统)通讯。Use case:架构图

2021-10-21 14:26:06 154

原创 APP组件化架构建设

APP组件化架构建设一、架构设计二、模块职责1、空壳模块空壳模块中声明app的Application,这个 Application必须继承自Common组件中的 BaseApplication,因为只有这样,在打包应用后才能让BaseApplication中的Context生效。2、业务组件层,如图1)、技术选型:A、设计模式: MVVM(JetPack:ViewMode/ Livedata/Databinding/room等)B、路由框架:ARouterC、网络框架:Retrof

2021-09-27 14:11:41 338

原创 Android APP拦截/屏蔽 Home/Recent/Back按键

1、屏蔽a、Home/Recent 按键权限配置:<uses-permission android:name="android.permission.REORDER_TASKS" />代码编写:@Overrideprotected void onPause() { super.onPause(); ActivityManager activityManager = (ActivityManager) getApplicationContext()

2021-01-25 23:30:44 1320 1

原创 Android Q Settings 集成公共组件

  Android Q上将Settings中会使用到的特有的控件,会移动到SettingsLib下面,为每一种特有控件创建一个目录,并且创建android.bp文件,将widget编译成jar包文件,然后在SettingsLib的android.bp文件中引用这些jar包。以CustomDialog为例,1)、将CustomDialog目录放到在android/framework/base/packages/SettingsLib/下。2)、修改CustomDialog目录下有res, src,and

2020-11-30 21:16:33 366

原创 Android Q StatusBar启动流程

如图:1、SystemServer在startOtherServices方法中创建StatusBarManagerService并注册到ServiceManager中private void startOtherServices() { final Context context = mSystemContext; VibratorService vibrator = null; WindowManagerService wm = null; .....

2020-09-16 19:32:17 392

原创 Android 事件分发机制

图解如下图,分为3层,从上往下依次是Activity、ViewGroup、View。事件从Activity的dispatchTouchEvent分发,箭头的上面字代表方法返回值。touch事件分发核心View 之间的事件分发,实质上就是一个大的递归函数,而这个递归函数就是 dispatchTouchEvent 方法。在这个递归的过程中,如果含有ViewGroup,会实时调用 onInterceptTouchEvent 来拦截事件,或者调用 onTouchEvent 方法来处理事件。注意1、A.

2020-08-13 17:00:38 191

原创 List的深拷贝与浅拷贝

Java的浅拷贝(Shallow Copy)、深拷贝(Deep Copy)。浅拷贝(Shallow Copy):1、对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象。因为是两份不同的数据,所以对其中一个对象的该成员变量值进行修改,不会影响另一个对象拷贝得到的数据。2、对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。因为实际上两个对象的.

2020-08-09 23:23:59 1775

原创 Android 自定义ToolBar并沉浸式

  ToolBar是Android 5.0推出的一个新的导航控件用于取代之前的ActionBar,由于其高度的可定制性、灵活性、具有Material Design风格等优点,越来越多的App也用上了ToolBar。  沉浸式状态栏是从android Kitkat(Android 4.4)开始出现的,它可以被设置成与APP顶部相同的颜色,这就使得切换APP时,整个界面就好似切换到了与APP相同的风格样式一样。###依赖包:  Toolbar, implementation ‘androidx.app.

2020-05-16 21:21:22 711

原创 Android 9.0 Launcher Workspace 加载

加载Workspace入口在/packages/apps/Launcher3/src/com/android/launcher3/model/LoaderTask.java,想了解Launcher app的启动流程,可以先看看这篇文章,https://www.jianshu.com/p/0b273112cd7e1、Workspace加载调用过程,如图代码入口:/packages/apps/...

2020-04-06 19:53:30 944 1

原创 Android 9.0 Launcher启动详解

Launcer作为一个独立的APP,从开始执行到加载完成的整个流程。启动核心代码如下:/packages/apps/Launcher3/src/com/android/launcher3/Launcher.java@Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG,"onC...

2020-03-21 21:03:42 1384

原创 Android Jetpack 最佳开发姿势

在Android架构组件基础上,融入Kotlin 协程+retrofit,模拟网络,全面快速开发。NavigationNavController在 NavHost 中管理应用导航的对象,沿导航图中的特定路径导航至特定目标,或直接导航至特定目标。首先,定义 layout/activity_main.xml <fragment android:id="@+id/nav_...

2020-03-07 21:50:11 260

原创 Handler底层机制

 安卓的底层是Linux系统,了解Android Handler底层之前,需要了解一下Linux 知识。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。epoll:IO多路复用机制,可以理解为event poll,不同于忙轮询和无差别轮询,可以...

2020-03-02 19:04:51 372

原创 kotlin常用工具类总结,高效优雅的开发Android

  随着Kotlin的普及,很有必要对开发中常用的工具类总结整理,当然包括利用kotlin扩展Android原生控件方法、属性。主要分工具类util跟原生控件扩展ext两部分toast 用法toast(“hello”)click 用法button.click{// todo}启动activitystart+要启动的activity (比如 DemoActivity...

2020-02-22 18:07:13 1504

原创 kotlin 泛型-协变、逆变

在java中,假设有一个泛型接口 GenericClass ,该接口中不存在任何以 T 作为参数的方法,只是方法返回 T 类型值:那么,在 GenericClass 类型的变量中存储 GenericClass 实例的引用,是极为安全的——没有消费者-方法可以调用。但是 Java 仍然禁止这样操作:为此,我们必须声明对象的类型为 GenericClass<? extends O...

2020-02-22 18:05:10 195

原创 简单理解CAS以及compareAndSet

CAS:Compare and Swap, 比较并交换。CAS的作用是将指定内存地址的内容与所给的某个值相比,如果相等,则将其内容替换为指令中提供的新值,如果不相等,则更新失败。这一比较并交换的操作是原子的,不可以被中断。CAS是通过硬件命令保证了原子性,且硬件级别的原子性比高级语言的软件级别的运行速度要快地多。虽然CAS也包含了多个操作,但其的运算是固定的(就是个比较),这样的锁定性能开销很...

2020-02-22 18:02:25 432

原创 Java锁-自旋锁

1、什么是自旋锁  自旋锁是为实现保护共享资源而提出一种锁机制,用于多线程同步的一种锁,线程反复检查锁变量是否可用。由于线程在这一过程中保持执行,因此是一种忙等待。它是一种非阻塞锁,也就是说,如果某线程需要获取锁,但该锁已经被其他线程占用时,该线程不会被挂起,而是在不断的消耗CPU的时间,不停的试图获取锁。  自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自...

2020-02-22 17:54:50 322

Android性能测试,性能优化

这是腾讯开源,Android性能测试,性能优化,框架GT demo,例子代码,调试,已经集成GT sdk

2018-11-27

空空如也

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

TA关注的人

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