android基础
文章平均质量分 74
HUandroid
求偶遇一个美好的未来
展开
-
android 媒体文件分区适配
android 媒体文件分区适配最近刚好有个需求做了媒体文件的分区适配,记录以下官方文档地址:https://developer.android.com/guide/topics/data?hl=zh-cn问题点之前的下载文件都在/storage/emulated/0/android/data/pagename/file中,首先这个属于应用内部的文件系统,而且是不需要读写权限的申请的,它会跟随应用的卸载而删除。由于Android Q文件存储机制修改成了沙盒模式,同时对应用内部的文件系统加强了访问控原创 2022-01-27 17:30:35 · 2321 阅读 · 0 评论 -
android 集成Play Install Referrer
android 集成Play Install Referrer旧版在之前集成Google广告归因是采用广播的形式,定义一个匹配INSTALL_REFERRER的广播接收器: <receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver" android:enabled="true" android:exported="t原创 2021-07-30 16:58:40 · 4572 阅读 · 0 评论 -
OPPO崩溃问题解决
OPPO崩溃问题解决在APM上监控到一个高频cash,如下崩溃线程FinalizerWatchdogDaemonCaused by: java.util.concurrent.TimeoutException: android.content.res.AssetManager$AssetInputStream.finalize() timed out after 10 seconds at android.content.res.AssetManager$AssetInputStream.原创 2020-10-28 18:37:37 · 1691 阅读 · 0 评论 -
android 初识SPI
android 初识SPISPI全名是Service Provide Interface官方解释:为某个接口提供服务的机制。由ServiceLoader通过加载接口类或者抽象类,再通过模块的配置文件,以此扫描获取到多个实现类的全限定名后通过反射操作获取实例来跨模块通信。官方文档:https://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html使用这里的使用仅仅对于android方向的android组件化通信可以使用SP原创 2021-03-22 16:56:38 · 606 阅读 · 0 评论 -
动态更换app启动图标
动态更换app启动图标类似于双11与双12活动,app的启动图标会自动进行更换。原理很简单,通过PackageManager来启动或者禁止组件。预埋多个app入口,放置不同的icon。通过改变启动的activity来更换图片常规启动 。原创 2017-12-18 11:25:24 · 1702 阅读 · 0 评论 -
剖析Framework面试-笔记(二)
剖析Framework面试-笔记其他应用组件相关Service的启动原理Service的绑定原理使用原理UI体系相关进程通信相关线程通信相关其他应用组件相关Service的启动原理获取AMS的binder对象并发起startService的调用。其中ServiceRecord跟启动的Service是在AMS里面是对应关系的。pendingStarts是之后调用startServiceCommon的方法。r.app表示Service对应的进程,r.app.thread表示进程已经就绪。如果r原创 2021-07-11 19:54:04 · 596 阅读 · 0 评论 -
Recyclerview滑动对齐方式smoothScrollToPosition
Recyclerview滑动对齐方式原因遇到一个问题,就是常见的双击让Recyclerview跳到知道position,但是跳转却是到对应position的底部,而不是上面对齐。方法:smoothScrollToPosition(position)Recyclerview空实现smoothScrollToPosition,最后由对应的LayoutManager实现,这里是LinearLayoutManager @Override public void smoothScrollToPosi原创 2021-05-12 18:36:02 · 1925 阅读 · 0 评论 -
android Gradle插件分类与使用
android Gradle插件分类与使用简介作用与优点作用优点插件分类脚本插件对象插件内部插件第三方插件对象插件自定义插件DSLAndroid Gradle 插件分类编写与集成编写build.gradle中编写buildSrc编写独立项目编写简介Gradle 是一款非常优秀的构建系统工具,它的DSL基于Groovy实现,可以通过DSL来达到你构建的目的。其中提供了插件的概念,基于Gradle进行很好的扩展,而不改变其核心基础,又能满足不同业务的需要。这里只说android gradle 插件从Gr原创 2021-03-28 22:36:58 · 591 阅读 · 0 评论 -
android ViewFlipper实现跑马灯
ViewFlipper实现跑马灯实现跑马灯效果很简单,直接设置Textview的属性android:ellipsize="marquee" 就行了,然后主要焦点的抢占问题就行了,但这里是横向的跑马灯。ViewFlipper可以实现竖直方法的跑马灯效果介绍ViewFlipper可以理解成提供多个视图直接之前切换的容器。是继承了FrameLayout的容器布局,所以是可以调用addView方法去添加子视图的,然后设置子视图进入退出动画,就能达到竖直跑马灯的效果了。ViewFlipper提供了5个自定义原创 2021-03-01 00:03:24 · 787 阅读 · 0 评论 -
android 取消黑暗模式
取消黑暗模式在你的AndroidManifest.xml文件中,在application标签下,设置全局android:theme="xxx":<style name="BaseAppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> ... <item name="android:forceDarkAllowed" tools:targetApi="q">false</item原创 2021-02-03 10:13:26 · 2211 阅读 · 2 评论 -
Glide 4.0+源码分析
Glide 4.0+源码分析写过Glide的使用和一些注意事项了,这次简单分析下Glide的加载图片流程。 GlideApp.with(context) .load(resId) .into(imageView);总体分析整体框架可以看作以下几个部分:Glide 初始化系统,负责管理系统其他模块,比如:数据加载器、网络栈等。RequestManager 创建、初始化以及管理系统所有的Request。Engine 将资源加载请原创 2021-01-28 17:06:18 · 377 阅读 · 1 评论 -
Glide4.0+使用
Glide使用以及注意点前言都2020年了,还讲Glide的使用确实很过时,而且网上文章和官方文档一大堆,不过,在使用中往往也只用到那几句话,但是遇到的实际问题确实很多。想小记一下,怕自己忘记了。使用导包 api 'com.github.bumptech.glide:glide:4.9.0' api 'com.github.bumptech.glide:disklrucache:4.9.0' api 'com.github.bumptech.glide:annotations:4原创 2020-12-24 09:55:47 · 915 阅读 · 0 评论 -
android RecyclerView实现柱状图
android RecyclerView实现柱状图先上效果图:思路可以把每一个柱形图看作RecyclerView的单个item,原创 2020-12-08 16:04:33 · 748 阅读 · 0 评论 -
android mac搭建Nexus3.+私有maven
android 搭建Nexus3.+私有maven上次讲了搭建本地maven方法,这次说下Nexus3.+搭建方案(本地端口模拟远端)。安装篇原创 2020-09-21 15:29:28 · 421 阅读 · 0 评论 -
android productFlavors多马甲打包
productFlavors多马甲打包先上官方文档,写的很不错了,地址:https://developer.android.com/studio/build/build-variants?utm_source=android-studio#product-flavors这里只是总结下用法和一些注意点。背景有时候公司需要我们打很多马甲包(改包名和名字,其他一样的)、或者对不同应用市场的渠道包(应用图标不同、启动图或者厂商的推送分开集成)等需求,就可能需要创建很多项目去单独修改,很是麻烦。但是googl原创 2020-09-13 18:30:48 · 817 阅读 · 1 评论 -
android 问题小记
小记记录下一些很少用到的小知识点设置原创 2020-09-07 15:05:43 · 137 阅读 · 0 评论 -
android Context家族及详解
Context家族及详解家族关系何时创建Activity对应Application对应Service对应面试点一个应用包含多少个Context个数?Application能启动一个Activity嘛?Context为何会发生泄漏,怎么解决?ContentProvider的中的Context那来的?总结Context大家太熟悉了,大家都会用。比如启动组件、获取系统服务、获取权限相关、包管理、类加载、文件管理和资源相关等功能。这里先讲讲Context的类关系:家族关系开局一张图、内容全靠编:其实Ac原创 2020-08-25 15:38:45 · 252 阅读 · 0 评论 -
Android OkHttp 全面详解
Android OkHttp 全面详解目前来说OkHttp已经是对于android开发人员实现网络编程的重要途径之一了。github地址这里以3.10.0的源码分析,梳理整个网络请求的流程。包的导入引入包 api 'com.squareup.okhttp3:okhttp:3.10.0'日志库:搭配更佳api 'com.squareup.okhttp3:logging-interceptor:3.10.0'上面的不够好用?来个客户端的日志更清晰的:chuck库 debugCompi原创 2020-08-16 15:57:52 · 1129 阅读 · 0 评论 -
android 9.0 activity启动流程分析
android启动流程分析原创 2020-07-20 00:43:47 · 614 阅读 · 0 评论 -
android 注解使用
android中的注解使用定义Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的 Annotion对象,然后通过 Annotion对象 来获取注解里面的元数据。常用注解@Target修饰的对象范围,表示作用的范围。可以查看ElementType了解详情。取值范围TYPE类、接口FIELD字段、枚举METHOD方法原创 2020-05-11 15:37:45 · 536 阅读 · 0 评论 -
android内存优化-对象池模式和享元模式
在内存优化的道路中,往往会遇到对大量使用对象的情况,为了减少内存的分配,减少垃圾回收器调用次数,合理的使用对象设计模式去设计对象,减少内存抖动的风险。对于对象的重用,主要有2中设计模式:对象池模式和享元模式对象池模式思想:为避免一个可能会被重用的对象,被垃圾回收。从而节省了创建对象所花费的时间和内存的重新分配。使用一个对象池的对象(万物皆对象)去负责管理大量可重用的对象,是重用的对象被请求在再...原创 2020-02-07 17:42:58 · 502 阅读 · 0 评论 -
EventBus3.0源码分析
分析eventbus的源码,来了解其中的思想,并在平常的使用中注意点才会更清晰原创 2019-11-20 10:18:26 · 146 阅读 · 0 评论 -
小米手机全面屏开关
小米手机全面屏开关问题判断是否开启全面屏开始以为只是简单的判断是否存在虚拟键就行了,结果发现无论你是否开启全面屏手势,结果都是 : 存在后来在小米开发论坛找到了这个问题:Settings.Global.getInt(getContext().getContentResolver(), "force_fsg_nav_bar", 0) != 0;上面这句代码是用来判断是否开启全面屏的核...原创 2018-12-29 17:40:24 · 1803 阅读 · 0 评论 -
开发者模式之GPU渲染模式分析
手机自带的开发者选项中,有很多可以使用的工具,他们可以用来分析自己的应用的性能、绘制、anr等情况。下面主要说下PU渲染模式分析的简单讲解:GPU渲染模式分析打开 在屏幕上显示为条形条图 模式 该模式打开后,能以一种可视化的方式,呈现出U渲染框架的速度和节奏。打开后以支付宝的首页为例子:如图如上图:水平轴代表的是运行经过的时间、垂直轴代表每一帧所花费的时间,以毫秒为单位每一根方...原创 2019-08-26 22:42:49 · 6371 阅读 · 0 评论 -
启动优化的注意点
原创 2019-10-11 17:30:49 · 160 阅读 · 0 评论 -
其他方式登录控件
先看效果图,很简单的控件,不需要自定义: 分析一下要点:点击后,屏幕会有变暗,有一层遮罩整块布局有个上下移动的动画未点击状态下,布局往下移动了距离布局文件:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"原创 2018-03-19 11:56:29 · 2111 阅读 · 0 评论 -
android的项目结构和布局介绍
一、项目的结构介绍:每当创建一个项目时,会自动生成如下架构:每层目录分别代表意思:src:src是用来保存Java源文件的目录。如上图包含有三个java的源代码文件gen:gen是用于保存Android自动生成的一个R.java的清单文件。R文件是aapt工具根据应用中的资源文件自动生成的,即是一种应用的资源字典。R文件的规则主要有如下二条:原创 2016-08-09 22:51:11 · 3257 阅读 · 0 评论 -
自定义弧形View 渐变View
自定义弧形View 渐变View由于项目要求,要写一个渐变的弧形View作为背景。看效果图规划好属性渐变色起点渐变色终点圆弧高度非圆弧颜色渐变方向<declare-styleable name="ArcGradualView"> <attr name="color_gradual_start" format="color" /> ...原创 2018-12-05 10:42:05 · 995 阅读 · 2 评论 -
Android中的线程池及使用
Android中的线程池及使用线程池能处理业务中多个线程并发的问题,避免大量产生新的线程相互抢占系统资源,可以统一通过线程池来配置不同参数来管理线程。java中已经内置好了四种线程池供我们使用。线程池创建的参数 corePoolSize 核心线程数 一般情况下一直存活,即使没有任务keepAliveTime 非核心线程的闲置时长 当非核心线程的空闲时间超过该时长,会被...原创 2018-09-10 10:28:48 · 612 阅读 · 0 评论 -
Android运行时权限机制和动态申请权限
Android运行时权限机制和动态申请权限在2015年谷歌发布Android6.0系统,其中添加了运行权限检测,防止流氓应用盗取个人信息。而不在是安装的时候赋予应用在清单文件中申请的全部权限。Google将全部权限分成了普通权限(Normal Permisson)和危险权限(Dangerous Permisson),其中普通权限在应用安装时候赋予,而危险权限在运行是检测是否需要该权限动态获...原创 2018-09-16 15:53:20 · 1192 阅读 · 0 评论 -
检查粘贴的内容
粘贴板原创 2017-08-16 10:57:41 · 394 阅读 · 0 评论 -
xml布局
android中xml解析和生成原创 2016-08-11 22:36:49 · 407 阅读 · 0 评论 -
android几种布局组件的常用属性
介绍初学者采用的四种布局组件:TextView、EditView、Button、checkbox。一、文本框TextView的功能和用法TextView直接继承了View,而且还是EditView 和Button两个ui组件类的父类。是一个文本编辑器,只是关闭了文章编辑功能,把其他功能给予其子类执行。其派生出的子类类图如下:TextView的xml属性及相关方法介绍:1、a原创 2016-08-11 10:33:18 · 1031 阅读 · 0 评论 -
服务的用法和开启
四大组件服务:先介绍下安卓进程,安卓优先级可以分为以下5钟进程:(1)Foreground process 前台进程 用户正在交互 可以理解成相 当于 Activity执行onResume方法(2)Visible process 可视进程 用户没有在交互 但用户还一直能看得见页面 相当于Activity执行了onPause方法 (3)Service Process 服务进原创 2016-08-23 18:44:43 · 506 阅读 · 0 评论 -
Android手势和shape
现在所有的手机绝大部分已经都是触屏的,固这些手机都会对手指对屏幕的操作进行监控。android提供了手势识别器来对手势操作进行了监听:GestureDetector gestureDetector =new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {}其中可以重写其方法有如下几种:抛掷(on原创 2016-09-01 21:17:31 · 734 阅读 · 0 评论 -
android开发环境的搭建
android的环境的搭android开发必须要依赖环境才能开发,也是学习安卓的基础。现在主流的安卓版本已经到了Android-5.0版本以上,当然还有最新的Android-6.0,但开发基本也是用最稳定的安卓4.2或者4.3版本。当然直接用5.0开发也是顺应潮流。(android5.0是彻底迎来了安卓系统扁平化时代,新的系统多了新的配色,全新的通知中心。在系统级别上, 5.0系统彻底从D原创 2016-08-09 21:22:04 · 542 阅读 · 0 评论 -
android内容提供者
ContentProvider:ContentProvider(内容提供者)是android中的四大组件之一,但是在一般的开发中,可能使用的比较少。ContentProvider为不同的软件之间数据共享,提供统一的接口。也就是说,如果我们想让其他的应用使用我们自己程序内的数据,就可以使用ContentProvider定义一个对外开放的接口,从而使得其他的应用可以使用咱们应用的文件、原创 2016-08-23 20:36:39 · 659 阅读 · 0 评论 -
画布的用法和fragment用法
画布Canvas:Android框架API提供了一组2D描画API,使用这些API能够在一个画布(canvas)上渲染自己的定制图形,也能够修改那些既存的View对象,来定制它们的外观和视觉效果。在绘制2D图形时,通常要使用 把图形直接绘制在一个画布对象上(Canvas对象)。这种方法,要亲自调用相应类的onDraw()方法(把图形传递给Canvas对象),或者调用Canvas对象的一个draw…原创 2016-08-25 23:22:38 · 1216 阅读 · 0 评论 -
activity4种启动模式,生命周期的理解
一、Activity的生命周期当activity处于应用中运行时,它的活动状态是由以activity栈的形式管理的。固随着不同应用的运行,每个activity都可能从活动状态转到非活动状态,也会从非活动状态转入活动状态,或者被系统杀死。固需要了解activity的生命周期。Activity 的生命周期大致会经过如下四种状态:A、活动状态:当前Activity位于前台,用户可见,可以获得原创 2016-08-18 21:48:29 · 1758 阅读 · 0 评论 -
单选框的用法即几种常见对话框
一、单选框RadioGroup的组事件,可以将各自不同的RadioButton,设定与同一个RadioGroup组里的按钮,做出单一选择。RadioGroup中使用类组单选按钮。如果我们选中一个单选按钮属于一个单选按钮组,它会自动取消选中同一组内的任何先前检查的单选按钮。RadioGroup 属性:继承自android.view.View类android:checkedButton原创 2016-08-18 20:26:29 · 3686 阅读 · 0 评论