自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 各大应用商店隐私政策出现的问题和更新

(1)APP、SDK未告知用户收集个人信息的目的、方式、范围且未经用户同意,私自收集用户个人信息的行为。修改提示:SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。如果APP中有“个性化推荐”、“为你推荐”等功能,需要给个性化推荐功能加上开关,并在。未经用户 同意,私自使用个人信息或私自向服务器发送共享个人信息。(3) 短时长、高频次,在用户明确拒绝权限申请后,频繁弹窗。(2)申请与当前服务场景无关权限的行为。(4)拒绝权限请求后无法进入App。

2022-09-29 16:00:54 3378 1

原创 Android12适配

1.给Manifest的四大组件配置属性"exported",如果有</intent-filter/>标签,需要配置成true,其他默认false。如果没有将会抛出异常。Targeting S+ (version 10000 and above) requires that an explicit value for android:exported be defined when intent filters are present <activity

2022-03-04 17:38:26 2373

原创 项目架构之----注解反射

最近一段时间在重新整理项目架构,在整理过程中把一些有用的东西分享一下。那么注解和反射就手写butterknife来解释一下吧~1.注解的原理:我们可以理解为注解就是通过反射机制,调用注解标记的方法,实现和直接用对象调用方法一样的操作。2.注解使用 @interface (kotlin 使用 annotation)标记类,用@Target来描述它的作用范围,用@Retention描述它的生命周期。Target作用范围@Target(AnnotationTarget.CLASS)@Target(Ann

2022-03-03 11:10:45 2467

原创 Android Gradle 7.1+新版本依赖变化

前一段时间由于工作需要把可爱的小雪狐舍弃了,找到了小蜜蜂。但是新版本的小蜜蜂出现了很多和旧版本不一样的位置。1.功能位置迁移,原来在工程build.gradle的buildscript和allprojects移动至setting.gradle并改名为pluginManagement 和dependencyResolutionManagement。里面的东西依旧可以按照原来的copy过来。pluginManagement { repositories { gradlePluginP

2022-02-28 09:55:40 21085 8

原创 1.Jetpack系列之 ---- Navigation原理分析

1.Navigation是什么?官方文档中的介绍Navigation 是一个框架,用于在 Android 应用中的“目标”之间导航,该框架提供一致的 API,无论目标是作为 Fragment、Activity 还是其他组件实现。那它其实就是一个对 Fragment / Activity 进行统一调度跳转的组件库,2.Navigation怎么用?第一步、module中添加依赖。 def nav_version = "2.4.1" // Java language implementat

2022-02-23 17:52:57 1111

原创 Jetpack系列之 ---- DataBinding 原理分析

1.databinding 的使用1> 在Module的build.gradle配置文件中设置开启 buildFeatures { dataBinding = true }2> 使用 private ActivityMainBinding mainBinding; mainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);3> xml 双向绑定&lt

2022-02-07 14:54:16 1352

原创 Jetpack系列之 ---- LiveData原理分析

注:如有不了解Lifecycle原理, 或者不清楚可见状态和 不可见状态请参考Lifecycle原理分析的状态机分析。1.LiveData的使用分析可以看出 observe() 方法有两个参数:1)第一个参数是LifecycleOwner2)第二个参数是observer MutableLiveData<String> liveData=new MutableLiveData<>(); // observe 订阅关系 liveDa

2022-01-25 13:15:30 2082

原创 Jetpack系列之 ---- Lifecycle原理分析

Lifecycle的使用和实现原理这篇文章做为一个Jetpack的学习笔记,用来记录一部分源码原理的学习理解。其中大多数是阅读完源码和别人的文章之后自己总结的,主要为了方便后面的复习,如有不正确的地方,请大佬指出。一、Lifecycle用来干嘛的?Lifecycle基于观察者模式设计的,用来监听Activity/Fragment生命周期。在我们实际代码中activity fragment 会设计成被观察者,实现lifecycleOwneruserClass FromeWorkClass

2022-01-24 11:46:09 813

原创 RecyclerView缓存

RecyclerView分为四级缓存RecyclerView根据不同的状态可以分为:屏幕内缓存、屏幕外缓存、自定义缓存、缓存池。RecyclerView是通过内部类Recycler来管理缓存。一级缓存:屏幕内缓存(mAttachedScrap)屏幕内缓存指在屏幕中显示的ViewHolder,这些ViewHolder会缓存在mAttachedScrap、mChangedScrap中 :mChangedScrap 表示数据已经改变的ViewHolder列表,需要重新绑定数据(调用onBindViewHo

2022-01-04 13:43:02 1933

原创 Handler源码分析

Handler源码分析发送消息消息入队消息循环消息遍历消息的处理同步屏障机制阻塞唤醒机制总结Handler采用的一种生产者-消费者模型,handler就是生产者,通过它可以生产 需要执行的任务,而Looper则是消费者,不断从MessageQueue中取出Message对这些消息进行消费,下面我们看一下其具体的实现。发送消息关于post & sendMessageHandler 对外主要有两种方式来实现在其所在 Looper 所在线 程执行指定 Runnable——post 及 sendMe

2021-05-08 15:05:25 87

原创 OOP面向对象的理解

1.什么是面向对象(OOP) ---- 一切皆对象,面向过程是具体化的面向对象,面向对象是模型化的面向过面向过程是具体化的,流程化的需要一步步去实现每个过程面向对象是模型化的,将一个个过程封装成一个模型或者功能面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们我们使用的就是面向对象了。面向过程:优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。 缺点:不易维护、不易复用、不易扩展.优点:易维护、易复用、易扩展,由于面向对象有封装、继承、..

2021-05-08 11:02:11 587

原创 Android 面试题_Java基础部分

记录点搜到的面试题

2020-08-19 11:22:40 288

原创 Android 11(R)适配_(8月更新)

1、简介随着6月3日的Google网上IO开发大会的顺利取消,Android R的适配也被逐步提上日程,OPPO应用商店率先发布了要求 8月底前全部适配Android R,那么关于Android R 需要适配的都有哪些呢?我们先从Android开发文档中浏览一下。通过时间轴的描述,最终版应该在第三个季度正式使用,在做这些之前,由于国类没有出产Android R的手机,需要在模拟器上面进行预适配(为啥说预适配,因为模拟器经常自动修复bug,换真机到处崩)。2、隐私权更新Android 1.

2020-06-17 15:08:08 12987 2

原创 旧文更新(一):有关Java基础的理解

1、equals与==的区别:“==”是判断两个变量或实例是不是指向同一个内存空间(栈地址是否相等)“equals”是判断两个变量或实例所指向的内存空间的值是不是相同 (栈地址对应的值)2、Object有哪些公用方法?方法equals测试的是两个对象是否相等方法clone进行对象拷贝方法getClass返回和当前对象相关的Class对象方法notify,notifyall,wait都是用来对给定对象进行线程同步的3、Java的四种引用,强弱软虚,用到的场景强引用:如果一个

2020-06-17 13:15:55 143

转载 转:Android系统架构

关于Android系统Android,本义指“机器人”,是Google于2007年11月5日宣布的基于Linux平台的操作系统。Android系统优缺点开放性在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台.

2020-06-04 10:04:57 388

原创 Android sdk 21~23 WebView加载报错

今天适配完成AndroidQ,Android5.1.1又出幺蛾子了,线上App首页大促活动崩了,首页A类活动....这是不是绩效都要清0了。拿出我尘封5000年的三星note3搞一波事情,我的天刚进去就炸了。啥都没干.......这怪谁...只能撸起袖子直接干,1、先找找问题在哪,刚开始以为是Android问题,定位bitmap对象发现根本不是,这是H5的问题呀2、自以为是H5的问题,然后去怼H5小姐姐,咋回事你们搞的我们加载不出来了。然后H5小姐姐就把去年的活动拉出来,结果还是加载不出来。去年

2020-05-28 10:43:45 762

原创 友盟Android10 (Q) 踩坑指南

友盟Android10的适配踩坑记录一下,经过上次升级AndroidX和AndroidQ之后,一直以为万事大吉,知道最近上线的时候才发现了问题。Android10手机初始化友盟崩溃........1、请看友盟大兄弟的代码老哥啊,竟然没有判空,这还怎么玩文档上面写的又是 U-push的6.0.1是最新的,万般无奈只能找友盟客服小姐姐去处理了,结果客服小姐姐说可以看里面的集成文档。what? 集成文档是6.0.5!!!那么撸起袖子搞他2、升级了半天才发现是我眼神不好使,明明是 com.ume..

2020-05-27 16:42:08 1395 2

原创 Android 10的适配

自从项目升级AndroidX之后,以前弄过的一些东西都不怎么好使了,关键的一些第三方库也需要升级,说道为啥使用Androidx,这就是个问题了,某天不小心把sdk升级到29之后发现support 库不维护了......(咋的,活不起了不想干活了吗),瞬间感觉自己是不是饭碗没了,不管三七二十一先百度一番,终于才知道jetpack新生态。算了扯远了 先聊聊Android10 需要升级的东西吧!!!1、需要重点升级的第三方库 Glide 4.11.0、友盟等,2、support 换Androidx 库..

2020-05-27 10:28:37 505

原创 kotlin-理解mvvm(二)

先说一下源码:mvvm地址前段时间在空闲的时间准备重写一下mvp,升级sdk的时候发现support包不推荐使用了......这是啥情况,不明觉厉的百度了一下才知道jetpack这么个东西。这是饭碗快没了呀,赶紧百度来一梭子代码看看到底需要什么样的神操作。看过别人的mvvm(我是谁?我在哪?我写的啥!)abstract class BaseActivity<VM : BaseViewModel, DB : ViewDataBinding> : AppCompatActivity()

2020-05-08 17:37:15 308

原创 kotlin-实战迁移项目(一)

说到基础就想起的是面向对象、封装、继承、多态......之类的,以前学习kotlin的时候都是从kotlin教程上学习简单的东西。学习完之后新需求就迎面而来,重构项目的计划就搁浅了(当时自己也真是想当然的以为kotlin没啥东西)。最近空余时间终于下手了公司项目才发现迁移起来有多麻烦1、数据类 java上面一个数据类型比如user ,省去了set、get方法。data clas...

2020-05-05 15:20:24 176

原创 Android 自定义Toast类

吐司是我们开发中常用到的,系统的吐司样式单一,位置获取麻烦.....(反正就是感觉拖泥带水的不干脆 ε=(´ο`*)))唉 ),最近上班之余搞搞MVP的基础框架,想到了写个自定义的吐司。主要为了简单,想了好久发现不会简化,那就搞个麻烦的。1、羡慕人家Glide的链式结构,自己也搞个出来 public static ToastUtils with(Context conte...

2019-08-02 17:11:03 260 1

原创 Viewpager自动循环播放

Viewpager的无限循环方式有两种,网上有很多现成的例子1、第二种就是无限型,在pagerAdapter的getCount方法设置一个很大的值 ① @Override public int getCount() { return Integer.MAX_VALUE; }这个值设置的比较大就可以 , 还有好多文章设置10000、1...

2019-03-29 13:38:27 310

原创 使用Retrofit+Rxjava实现轮播

ConvenientBanner实现轮播图效果转载请标明:http://write.blog.csdn.net/mdeditor#!postId=78402111本文是使用Retrofit+Rxjava及ConvenientBanner实现轮播效果,先看看效果: 轮播图效果实现步骤:1、集成第三方框架2、使用GsonFotmat生成BannerEntity3、BannerService接口

2017-10-31 12:40:50 424

空空如也

空空如也

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

TA关注的人

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