Android
文章平均质量分 65
Android相关的文章
猿界新星蔡
始于努力,终于天意。
展开
-
Android Room 数据库自动升级与迁移策略
Room 数据库的版本升级需要谨慎对待。每当数据库结构发生变化时,务必升级版本号并提供相应的迁移逻辑,以确保已有的数据不会丢失。同时,通过合理规划数据库结构和版本迁移策略,可以最大程度地避免版本升级带来的潜在问题。在实际项目中,随着业务逻辑的不断演进,数据库升级几乎是不可避免的。掌握 Room 的迁移机制,有助于我们更好地维护项目的稳定性。原创 2024-09-18 01:29:30 · 620 阅读 · 0 评论 -
Android源码目录结构概览
Android源码的目录结构是为了组织和模块化不同层次的系统组件而设计的。原创 2024-07-20 18:56:39 · 260 阅读 · 0 评论 -
关于 LayoutInflater.inflate 的取值结论
时,返回的对象上则拥有根节点的布局参数。时,所返回的是不具备布局参数信息的根节点。原创 2024-07-15 04:01:57 · 176 阅读 · 0 评论 -
Android Bitmap 和Drawable的区别
直接操作:Bitmap:允许直接操作图像的像素数据,适用于图像处理和操作。Drawable:无法直接操作像素数据,更适合于通用的图形绘制。灵活性:Bitmap:主要用于位图图像,较为简单直接。Drawable:抽象类,提供了更丰富的子类和功能,适用于更复杂的图形操作。内存管理:Bitmap:占用内存较多,需要手动管理生命周期(如调用recycle()方法)。Drawable:内存管理由系统负责,相对更加安全和方便。类型支持:Bitmap:仅支持位图图像。原创 2024-07-02 01:45:45 · 443 阅读 · 0 评论 -
Message的复用
不仅是Android开发中一个高效的消息创建策略,更是面向性能优化设计思想的典型体现。它通过简单而高效的对象池模式,最大限度地减少了对象创建的开销,展示了Android框架在细微处对性能极致追求的设计哲学。开发者应当充分利用此类API,以构建更加高效、响应迅速的Android应用。原创 2024-06-01 19:31:55 · 495 阅读 · 1 评论 -
Android9.0以后不允许HTTP访问的解决方案
自 Android 9.0 起,默认禁止使用 HTTP 进行访问。原创 2024-03-30 00:18:16 · 1796 阅读 · 2 评论 -
Android中将byte大小转换为KB、MB、GB等
代码示例。Formatter.formatFileSize(Context context, long sizeBytes)会根据传入的sizeBytes,自动将其转换为kb,mb,gb等单位。例如:100 B,1.00 kB,1.00 MB,1.00 GB,10.00 TB,10.00 PB原创 2022-02-12 17:11:13 · 3026 阅读 · 1 评论 -
for循环优化
for循环优化for循环查询数据时,在数据量大的时候,不同的写法在耗时上会有些差距。未优化的写法先添加一下数据private static List<String> getList() { ArrayList<String> strings = new ArrayList<>(); for (int i = 0; i< 1000; i++) { strings.add("" + i); } return strings;}pri原创 2021-11-20 21:13:51 · 633 阅读 · 0 评论 -
通过fileProvider接收外部App传递文件路径的一些坑
问题由于Google的作死,现如今线版本的Android系统阻止了应用之间通过intent传递路径的行为,而通过此方法传递过来的路径会非常奇怪,直接获取会以类似如下形式表现:content://com.example.app.provider/storage/emulated/0/xxx...如果将它丢到new File(path)里则会导致出错,那么如何解决这样的奇葩路径呢?按照以往的方法,我们要读取到需要打开的文件的方法为:Intent intent = getIntent();if (i转载 2021-07-20 01:26:36 · 1408 阅读 · 0 评论 -
AIDL通信实例
文章目录AIDL服务端1.首先创建一个AIDL文件2.make project3.编写一个服务类客户端1.创建aidl文件2.创建Person类3.make project4.调用服务端AIDLaidl是Android进程间通信的一种方式,下面就介绍一个如何实现客户端与服务端的AIDL。服务端新建一个service的项目。1.首先创建一个AIDL文件文件名可以随便取,这里取一个ITest,点击finish之后,就会出现一个aidl的目录。ITest.aidl// ITest.aidl原创 2021-07-04 17:39:02 · 684 阅读 · 0 评论 -
一个注解完成Android权限申请
文章目录AspectJRxPermissionsAOPAOP应用场景AspectJ是什么?AspectJ怎样替我们实现AOP?使用添加依赖语法Android权限申请AspectJRxPermissions一个注解就能完成申请权限。@AndroidPermission(permissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE})public void原创 2021-03-12 15:05:11 · 545 阅读 · 0 评论 -
TBS腾讯浏览服务静态集成,亲测可用,有demo
序言TBS的好处我就不多说了,此篇文章是关于TBS的静态集成,如果想要动态集成的话,可以参考我的另一篇文章TBS腾讯浏览服务接入以及遇到的坑。静态集成最大的坏处就是包会特别的大,应该会增加30M左右,如果不想要的话可以看我的另一篇文章。想要静态集成的伙伴多数都是因为有些时候,内核会因为一些不知道什么原因不会下载或者加载内核,但是如果是静态的话就一定可以使用x5内核。这个下载加载的问题,我在另一篇文章中也有解决方案。如果不想看下面文章的,可以直接下载我的demo,直接运行即可。想使用的话复制我里面的代码就原创 2020-12-28 15:05:27 · 5022 阅读 · 9 评论 -
AndroidStudio中使用Debug
这可能是史上最详细的 IDEA 中使用 Debug 教程! Java后端技术 2019-08-25 09:19:00 ...转载 2020-10-23 16:52:35 · 5173 阅读 · 0 评论 -
Application创建以及Activity启动流程简析
APP启动流程创建Application首先每个APP都有一个main方法的入口,在Android中main方法是在ActivityThread中的。ActivityThread#mainpublic static void main(String[] args) { //代码省略}紧接着在main方法中实例化了ActivityThreadpublic static void main(String[] args) { //代码省略 ActivityThread th原创 2020-10-13 14:43:33 · 1047 阅读 · 0 评论 -
TBS腾讯浏览服务接入以及遇到的坑
TBS腾讯浏览服务接入TBS文档接入地址基本上的话照着这个文档接入是没有什么问题的,但是打开本地文件的时候,还是出现了一点小问题,因为文档里面没有说明。基础配置现在的Android开发都使用Android Studio了,所以只需要在app的build.gradle里面添加依赖,这份文章的日期是2020/9/30,最新id版本是下面这个api 'com.tencent.tbs.tbssdk:sdk:43939'权限配置<uses-permission android:name="and原创 2020-09-30 18:12:52 · 15754 阅读 · 13 评论 -
基于Kotlin+MVVM+LiveData基类的封装
前言Kotlin在国外已经非常流行了,好处不必多说了,如果不学习的话,那就只能落后了,那么迎娶白富美的机会可就少了许多。MVVM+LiveData也是目前比较流行的APP架构模式了,有必要学习一波。所以本着学习的态度,写了一个BaseModule,方便写新项目时可以直接依赖使用。废话不多说,开码。思路首先我的思路是这样的,有的Activity可能不需要ViewDataBinding,也有可能不需要ViewModel,也有可能都不需要,所以我的BaseActivity中,只加入了最基本的代码。然而有需要原创 2020-08-10 16:11:22 · 1801 阅读 · 1 评论 -
基于Android10的Activity的启动流程简析
启动Activity调用Activity的startActivity,最终都会调用startActivityForResultInstrumentationinstrumentation#execStartActivityActivityTaskManager.getService() .startActivity(whoThread, who.getBasePackageName(), intent, intent.r原创 2020-08-08 21:34:15 · 758 阅读 · 0 评论 -
Android 折叠布局,setPolyToPoly的使用
在查看Matrix相关资料的时候,发现了setPolyToPoly这个方法,可以实现折叠布局,觉得挺有意思的,就查看了相关资料。发现鸿洋大神写的一篇很不错,Android FoldingLayout 折叠布局 原理及实现(一),这篇文章是对鸿洋的这篇文章的一些补充吧,由于鸿洋的文章里的代码是在CSDN的,需要下载,所以我将代码上传至GitHub,MatrixPolyToPolyDemo,有兴趣的可以看看。还有一篇文章也不错,鸿洋的文章里也提到了,Android Folding View(折叠视图、控件),可原创 2020-05-21 14:11:07 · 2059 阅读 · 1 评论 -
在线浏览PDF,office文档
目前找到微软:https://view.officeapps.live.com/op/view.aspx?src=(输入你的文档在服务器中的地址); (测试没成功过,也许有人成功过)谷歌:https://docs.google.com/viewer?url=(输入你的文档在服务器中的地址); ( 翻墙,基本国内用不上)xdoc: http://www.xdocin.com/xdoc?_fu...原创 2020-03-23 22:43:36 · 616 阅读 · 0 评论 -
leakcanary-android 2.0使用极其遇到的问题
使用这个版本的leakcanary使用特别简单,只需要添加以下依赖即可。什么都不需要操作,不需要像之前的版本要在application里面进行初始化。如果没有什么特殊的需求,只需要以下依赖即可,就是这么神奇,至于原理什么的可看官网。还可以配置一些特殊的选项,比如错误发到服务器什么的,具体可看官网。leakcanary官网dependencies { // debugImplementati...原创 2019-11-07 18:57:23 · 3168 阅读 · 3 评论 -
支持单选,多选,还可以限制选择的数量的android流式布局
前言由于开发需要,需要做一个效果,一个流式布局的标签,可多选,并且要限制选择的数量,在查找了许多大神写的代码后,决定用鸿洋大神写的一个框架.项目地址用法在app的build.grade中加入依赖dependencies { compile 'com.zhy:flowlayout-lib:1.0.3'}声明在布局文件中声明:<com.zhy.view.flowlayout.TagFlowLayo转载 2017-08-09 21:08:37 · 1965 阅读 · 0 评论 -
关于Toast的一些常见操作
关于Toast的一些常见操作创建一个单例的Toast使用场景Toast也被称为吐司,比如说现在有两个地方弹一个吐司,当用户点击了A地方的时候吐司之后,又马上切换到B地方吐司,如果是没有使用单例的话,那么当弹起第一个吐司的时候,时间就会有2-3S的间隔才会弹出第二个吐司.那么给用户的体验就会非常不好.默认的Toast写法//如果是使用studio的话,可以打Toast就可以快速的写出这行代码,记得T必原创 2017-07-03 14:19:27 · 908 阅读 · 0 评论 -
Android Studio 翻译插件
Android Studio 翻译身为中国人的我们,英文水平不好是可以理解的,对吧。但是在开发中,全都是英文文档,想好好看下文档都不行。不过我们有翻译软件,因此选择好的一款翻译软件可达到事半功倍的作用。有道词典有道词典的确是挺不错的,但是呢,就是卡的很,他可以直接在studio中划词翻译,还是挺方便的。但是就是卡的很,有时候就是半天不出来。金山词霸金山词霸不卡,用起来很流畅。但是呢,就是不能直接在s原创 2018-01-03 23:19:05 · 1809 阅读 · 0 评论 -
Android开发——JVM、Dalvik以及ART的区别
0. 前言2014年6月25日,Android L 正式亮相于召开的谷歌I/O大会,Android L 改动幅度较大,谷歌将直接删除Dalvik,代替它的是传闻已久的ART。0.1 先对Dalvik以及ART做简单介绍:什么是Dalvik:Dalvik是Google公司自己设计用于Android平台的虚拟机。 Dalvik虚拟机是Google等厂商合作开发的Android移动设转载 2017-11-21 16:32:50 · 344 阅读 · 0 评论 -
Android启动模式之singleinstance的坑
前言在实际应用中,使用singleinstance启动模式时,会遇到一些奇奇怪怪的问题。Android有四种启动模式,分别是standard,singleTop,singleTask,singleInstance。下面分别简单的介绍下这四种启动模式的作用。standardAndroid 默认的一种启动模式。不需要为activity设置launchMode。这种启动模式简单的来说就是当你原创 2018-01-16 17:56:35 · 36770 阅读 · 20 评论 -
ScrollView与RecycleView的嵌套问题
ScrollView嵌套RecycleView滑动时会有卡顿的现象禁止RecycleView的滑动事件。recyclerView.setLayoutManager(new GridLayoutManager(mContext,2){ @Override public boolean canScrollVertically() { return false;...原创 2018-02-26 17:14:02 · 434 阅读 · 0 评论 -
App Links的使用以及坑
前言App Links可以从一个URL或者短信中直接启动APP。不过只能在Android 6.0的版本上才能使用。配置在想调用的Activity上加上<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> ...原创 2018-11-02 17:19:52 · 3494 阅读 · 0 评论 -
APP启动小程序
APP启动小程序先需要到微信开放平台上注册,申请APPid等.紧接着安卓文档进行一些相关的配置等.微信开放平台文档-Android在注册了APPID的情况下,四步即可实现APP跳转小程序第一步Android Studio环境下:在build.gradle文件中,添加如下依赖即可:dependencies { api 'com.tencent.mm.opensdk:wechat-...原创 2019-02-28 14:55:15 · 654 阅读 · 0 评论 -
Android 华为8.1 系统卡顿
Android 华为8.1卡顿之前有个需求是要字体不随系统改变,然后我在我的BaseActivity里加上了以下代码 @Override public Resources getResources() { // 获取到resources对象 Resources res = super.getResources(); // 修改con...原创 2019-03-30 17:48:02 · 701 阅读 · 0 评论 -
友盟自动集成
第一步在项目的根目录下repositories { google() jcenter() //加上这句 maven { url 'https://dl.bintray.com/umsdk/release' } }allprojects { repositories { google() ...原创 2019-04-16 18:23:21 · 976 阅读 · 0 评论 -
Android 自动化打渠道包
本文基于Android studio3.4,JDK1.8,gradle-5.1.1-all。前言我们经常都会打包上线,然后大多数情况下也都是会有多渠道。按照以前的打包方式,太麻烦了,所以本文阅读了Android-解放双手之Gradle自动化打包实战(原创)一文后,设置了自己的打包方式。设置签名的配置首先要有签名的文件,在这里创建签名文件。怎么创建这里就不说明了。签名配置有两种方式第...原创 2019-05-08 16:02:49 · 684 阅读 · 0 评论 -
Android studio调试
Android studio调试调试在开发的过程中占有很重要的地步,有些时候出错了但是一步步的打log在重新运行,是一件很耗时的事情,而且每次需要打印新的log就必须重新运行一次,如果电脑配置不够高,基本上基本上才能运行一次,对于开发的效率来说是非常低的,所以掌握debug的调试很重要。基本调试在studio上,打上断点,哪里不会打哪里。断点就是你需要调试的地方。Debug模式启动APP(Shift转载 2017-10-19 15:00:13 · 414 阅读 · 0 评论