自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小唯的博客

每天进步一点点

  • 博客(46)
  • 资源 (9)
  • 收藏
  • 关注

原创 ViewModel + LiveData的尝试感受

我们知道mvc->mvp是为了解决Activity臃肿冗余的问题,而mvp中会出现presenter臃肿冗余,进而出现了mvvm,进一步解耦。而在刚开始的时候提到mvvm,印象中是databinding,实际使用中发现databinding会出现问题定位困难等问题,具体见这篇文章。后来jetpack的出现,mvvm一般是使用ViewModel+LiveData实现。

2023-03-30 16:33:44 394

原创 电视开发中的焦点问题-监听父view焦点变化

最近开始接触tv开发,遇到一个问题,父view为一个列表,整个列表通过addView方式进行添加显示,获取焦点的为addView中的每个itemView,通过按键对itemView进行焦点切换,那我怎么可以知道父view列表获取焦点和失去焦点呢?(列表中有itemView获取焦点则认为父view列表获取焦点),发现无法对整个列表layout设置焦点改变监听,因为获取焦点包括按键焦点变化的为每个itemView。

2023-03-24 15:57:32 211

原创 view的context一定是Activity吗

最近在使用glide加载图片的时候出现“”,但明明在使用glide之前已经进行了Activity是否destroy的判断,为什么还会发生这个crash呢?注意到Android版本为4.4.2,对应crash中glide使用的context为view.getContext(),所以是不是因为view.getContext()不是Activity类型,所以没有走到判断逻辑,debug发现此时的view.getContext()为类型,这是为什么呢?

2022-11-18 16:09:30 941

原创 Android中关于aar打包和集成

最近项目中需要更新sdk版本,基础库moudle B 依赖sdk版本。更新sdk版本的话->需要替换B中的sdk并将B打包成aar集成到主项目A中,原以为很easy的事情结果修改后运行项目一直报错“”。但sdk版本是有这个方法的呢,编译也未报错,尝试了清除缓存等方法后还是报错,不明白为什么运行后打开app就会闪退报错呢。后来定位到因为aar包对应的B中的sdk是放在lib下的,打包成aar但对应的B中的lib也需要放到主项目A中的lib下,否则就会报错方法找不到。

2022-11-14 14:53:49 1981

原创 Android动态切换本地源码依赖与maven依赖

不管项目架构是组件化、模块化等,我们一般都会把一些基础库放在一个单独工程B中,通过maven或是打包aar的方式集成到主工程项目A中。然而当解决问题需要添加Log日志或是修改基础库时,我们只能在B中进行修改,通过maven或是打包aar集成到A中进行验证。如果验证还有问题,重复操作。这个时候我们就会想如果直接依赖基础库源码的话就很方便,验证成功之后再上传maven或是打包aar。这篇文档为了记录动态切换本地源码依赖与maven依赖,也就是通过变量控制是否依赖基础库源码还是依赖aar包。

2022-11-14 11:11:32 1462

原创 Android Tv连接charles

对于TV怎样安装证书,连接代理呢?本文主要记录TV连接charles的方法。

2022-07-21 10:08:06 1116

原创 Sdk开发流程,导入Project

最近遇到一个新需求,需要将功能封装成sdk,提供给多方使用,所以抽时间学习下sdk开发流程,并记录。创建Module创建module,选择Android Library,如下图所示:创建好module后,可以进行相应sdk开发工作。生成导出aar点击rebuild project可以在build/output/aar包下生成相应的aar文件。集成aar到project中将aar包copy到project的libs下,aar包名为test.aar为例,在app下的build.gradle中加

2020-09-13 10:16:52 673

原创 使用IntelliJ Idea开发插件的过程

最近想学习一下studio中的插件开发,下载安装IntelliJ IDEA,在运行插件工程,打包插件在studio中加载时出现了几个问题,此篇文章用来简单记录插件开发的过程和遇到问题的解决方法。下载安装IntelliJ IDEA点击官网根据版本进行下载,其中Community为免费版。下载后进行安装,安装后点击启动IntelliJ IDEA。开发插件的过程新建一个插件工程点击next...

2019-10-28 17:36:21 2194

原创 记ViewPager使用白屏问题

最近在做项目的时候,遇到了ViewPager空白白屏问题,所有有了本篇文章,从源码分析,记一次ViewPager白屏问题。如下图所示:一.切换Tab3后点击Tab1,ViewPager页面出现空白:ViewPager默认缓存1个页面,设置当前页面左右页面预加载页:点击Tab1,日志如下:10-18 15:07:26.195 D/xxx: initView010-18 15:07:26...

2019-10-18 16:19:18 1932

原创 Android页面嵌套那些事

前段时间做一个页面需求,就是经典的复杂嵌套,scrollview嵌套viewPager+fragment,其中fragment是一个recyclerView,虽然官方不建议这种页面嵌套,但这种页面布局在开发中是很常见的一种,此篇文章记录一下开发过程中页面中的各种嵌套问题,包括viewPager的高度自适应问题。一.Scrollview嵌套ListviewscrollView嵌套listview...

2019-10-16 18:53:59 857

原创 从源码角度理解Can not perform this action after onSaveInstanceState异常

在开发中经常遇到Fatal Exception: java.lang.IllegalStateException:Can not perform this action after onSaveInstanceState异常,那这个异常出现原因是什么呢,怎么解决呢?问题描述出现Fatal Exception: java.lang.IllegalStateException:Can not pe...

2019-05-16 18:20:21 5856 1

原创 crash总结

在工作中会定时解决crash问题,此篇文章是对遇到的crash进行记录。持续更新。。。。。。1.Fatal Exception: java.lang.IllegalStateException:Fragment CustomerSearchFragment{ac94a87} not attached to Activity问题截图:问题原因:Fragment还没有attach到Activit...

2019-04-09 16:52:02 250

转载 Android中对静态壁纸和动态壁纸原理深入理解

本章主要内容:讨论动态壁纸的实现。在动态壁纸的基础上讨论静态壁纸的实现。讨论WMS对壁纸窗口所做的特殊处理。本章涉及的源代码文件名及位置:WallpaperManagerService.javaframeworks/base/services/java/com/android/server/WallpaperManagerService.javaWallpaperService.ja...

2019-04-01 14:49:17 5213

原创 Android静态壁纸和动态壁纸的使用和理解

这两天在公众号上偶然看到一篇关于设置动态壁纸的文章,觉得蛮有意思的,学习了一下,以此文章记录一下怎样给手机设置静态壁纸和动态壁纸,设置壁纸的使用方法。静态壁纸设置静态壁纸是通过调用系统WallpaperManager的方法来实现的,主要分为下面三种,同一种因不同的方法参数会对应多个方法:(1)通过bitmap设置壁纸:setBitmap(2)通过资源文件设置壁纸:setResource(...

2019-03-28 18:29:14 7495 1

原创 databinding的使用总结

mvvm+databinding流行了一段时间,但一直没有机会使用。最近尝试在项目中使用databinding,有一些感悟。databinding的感悟:1.集成databinding:

2019-02-19 18:20:12 1518

原创 TextView的autoLink属性设置超链接问题

需求如下:用一个view展示"请点击https://mp.csdn.net进行查找"这句话,并点击链接地址时可以进行跳转。最近接到类似的这种需求,网上查找资料学习到了TextView的autoLink属性,那autoLink是怎么使用的呢?为什么设置autoLink就可以实现TextView的超链接,底层是怎么实现的呢?TextView显示时自动排版不整齐,怎么解决呢?Te

2018-10-16 15:18:16 5634 2

原创 性能优化之过度绘制篇

最近接到一个任务,优化项目中的过度绘制问题。提到过度绘制,脑海中会浮现出include,merge,ViewStub标签,减少ViewTree的层次等等优化布局相关,但具体怎么进行优化,有一种无从下手的感觉。认真仔细阅读了官方文档中关于绘制过度的讲解,豁然开朗。 网上关于过度绘制的博客也不少,但自己喜欢对自己做的功能进行总结记录,所以抽时间写下本篇博客,对过度绘制进行总结,方便日后查阅。...

2018-09-13 12:19:15 2962

原创 面试题

最近有时间,把前段时间的面试总结一下。听朋友说最近市场行情不是很好,把相关源码好好研究了一下,自己也是准备了一段时间才开始面试。新浪1.ViewStub的实现,和setVisibility有啥区别?ViewStub和setVisibility实现过程中执行onMeasure,onLayout,onDraw三个方法中的哪个方法? 2.View和Activity怎么交互的?View,Acti...

2018-06-08 16:37:45 326 1

原创 从源码角度来看ViewStub

布局优化就会提到ViewStub,提到ViewStub印象里就是按需加载的概念,使用ViewStub和setVisibility可以实现相同的效果,那两者有什么区别呢?ViewSub的使用

2018-05-29 16:24:06 319

原创 关于Looper.loop()死循环???

一直以为自己把Android消息机制弄明白了,直到前段时间面试,发现还有细节方面没搞清楚,查找相关资料,此篇文章是对Looper对象是怎么获取的,线程里的ThreadLocal,Looper.loop()死循环问题等的理解和总结。 关于消息机制中Handler,Looper,MessageQueue关系请查看以前的文章https://blog.csdn.net/liuwei187/article...

2018-05-28 15:51:56 10052

转载 OkHttp使用和封装

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47911083; 本文出自:【张鸿洋的博客】一、概述最近在群里听到各种讨论okhttp的话题,可见okhttp的口碑相当好了。再加上Google貌似在6.0版本里面删除了HttpClient相关API,对于这个行为...

2018-04-13 15:42:59 430

原创 MVC,MVP和MVVM的区别

MVC,MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式,查找相关资料,本篇文章是借鉴相关资料对MVC,MVP和MVVM的进行总结,加深自己对这几种模式的理解,便于查看。 借用一张图来直观地表示这三种模式: 图片来源于这篇文章。MVCModel:数据存储,View:用户界面,Controller:业务逻辑 View 传送指令到 Controller;Contro...

2018-04-11 17:21:41 426

原创 Android中的反编译

最近在看《Anroid开发艺术探索》,关于反编译的工具的使用,以window为例,以此文章做个笔记。 apktool:http://ibotpeaches.github.io/Apktool/ dex2jar:https://github.com/pxb1988/dex2jar jd-gui:http://jd.benow.ca/使用dex2jar和jd-gui反编译apk将ap...

2018-03-19 10:21:52 244

原创 Android性能优化-电量优化,布局优化和网络优化

此篇博客主要是参考《Android高级进阶》,关于Android开发过程性能优化中的电量优化,布局优化和网络优化做一个记录。

2018-01-04 14:20:54 4967 2

原创 Android性能优化-代码优化和图片优化

此篇博客主要是参考《Android高级进阶》,关于Android开发过程性能优化中的代码优化和图片优化做一个记录。

2018-01-02 16:58:20 434

原创 Android中的ANR

ANR全称是Application Not Responding,即应用程序无响应,出现ANR主要原因是因为在主线程中做了太多耗时操作。ANR产生的原因我们都知道产生ANR是因为在主线程做了太多的工作,只有当应用程序的UI线程响应超时才会引发ANR,细分,超时产生原因一般有两种: 第一种:当前的事件没有机会得到处理,例如UI线程正在响应另外一个事件,当前事件由于某种原因被阻塞了。 ...

2017-12-19 16:14:54 460

原创 Android的事件传递机制

最近在看《Android高级进阶》,其中对事件的传递机制讲述的很清楚,以此文章作为读书笔记记录。主要是时间传递机制涉及的三个方法,View和ViewGroup事件传递的过程图解。

2017-12-11 16:13:35 181

原创 Android原生项目集成React Native踩坑记

最近在学习React Native,将Android原生项目集成React Native实现混合开发。参考官网和其他一些相关资料,自己动手一步一步操作,发现真的是一步步踩坑再填坑的过程,此文章记录集成React Native的步骤和出现的问题,方便以后查阅。 我这里使用的环境是AndroidStudio react-native为0.48.3 npm为3.10.10

2017-09-21 10:54:14 1848

原创 WebStorm的配置和运行项目

最近在学习react-native,所以决定使用WebStorm,以此文章来对WebStorm的下载,破解,配置和项目运行进行记录。

2017-09-18 14:16:06 51092

原创 Android中点击链接调起App

最近工作中的一个需求是点击短信链接则调起App然后完成相关功能逻辑,查阅相关文章完成需求,以此文章来记录Android中点击链接吊起App的实现。

2017-09-12 14:36:07 2146

原创 JavaScript的一些基本方法总结

最近开始学习JavaScript,以此文章来对学习中的一些方法进行总结,方便以后查阅。

2017-09-01 17:42:14 230

原创 Sublime Text的配置

学习react-native使用Sublime Text进行编辑时,对Sublime Text进行配置,包括自动补全,样式风格等插件的安装,字体大小设置等等,以此文章来进行记录。

2017-08-30 11:13:17 389

原创 Looper,Handler,MessageQuene

本篇文章主要是从源码简单分析记录下Looper,Handler,MessageQuenu三者之间的关系,handler机制实现的原理。

2017-07-25 17:53:05 574

原创 HttpUrlConnection和HttpClient的区别

HttpUrlConnection和HttpClient的区别一.HttpClient: 1.背景: Apache公司提供的库,提供高效的、最新的、功能丰富的支持HTTP协议工具包,支持HTTP协议最新的版本和建议,是个很不错的开源框架,封装了Http的请求,参数,内容体,响应等,拥有众多API。 2.优点: 拥有大量灵活的API,实现比较稳定,功能比较丰富,bug数量也很少。

2017-07-19 11:40:38 659

原创 ContentProvider的总结

ContentProvider作为Android四大组件之一,一般为存储和获取数据提供统一的接口,可以在不同的应用程序之间共享数据。本篇文章主要是总结关于ContentProvider的含义,作用,Uri, 共享数据的实现即数据的增删改查和监听数据变化等等。

2017-07-17 14:16:44 319

原创 BroadcastReceiver的总结

BroadcastReceiver作为四大组件之一,对发送出来的 Broadcast 进行过滤、接收和响应。 本篇文章主要是介绍BroadcastReceiver的含义,作用,使用场景,两种注册方式,分类,本地广播的使用和生命周期。

2017-07-13 10:46:32 310

原创 Service的总结(二)

这篇文章主要是关于使用Messenger实现进程间通信和aidl。 创建提供绑定的服务时,必须提供 IBinder,用以提供客户端用来与服务进行交互的编程接口。可以通过三种方法定义接口,扩展Binder类,使用Messenger和使用AIDL。

2017-07-11 13:58:29 279

原创 Service总结(一)

Service 作为四大组件之一,是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。本篇文章主要是总结了Service概念,作用,生命周期,两种启动模式,基本使用和IntentService的特点,原理和使用。

2017-07-07 11:06:35 365

原创 Fragment总结(二)

这篇文章主要是介绍Activity和Fragment之间通信而Fragment之间不能直接通信必须通过Activity来进行通信。

2017-07-06 14:48:25 174

原创 Fragment总结(一)

Fragment是Activity的一个组成片段,不能独立存在,必须嵌入到Activity,在Activity运行时进行添加和删除。 它具有自己的生命周期,但受宿主Activity生命周期的影响。 本文主要介绍fragment的定义,作用,生命周期和使用方法。

2017-07-05 14:00:59 220

设置壁纸demo

关于使用android系统原生的api,设置静态壁纸和动态壁纸的学习demo。

2019-03-28

TextView的autoLink属性设置超链接

使用TextView的autoLink属性设置超链接,用工具类方式和自定义View方式两种方式修改超链接显示样式和链接地址的点击事件。

2018-10-16

Android6.0运行时权限Demo

关于Android6.0运行时权限demo,包括未封装原生API申请权限,封装权限工具类,使用权限工具类在Activity和Fragment中申请权限。

2017-09-15

ContentProvider的使用Demo

关于使用ContentProvider来实现数据共享的demo

2017-07-18

BroadcastReceiver使用Demo

关于BroadcastReceiver的静态注册,动态注册,本地广播,有序广播的使用的简单测试代码。

2017-07-17

使用AIDL进行通信

关于使用AIDL实现进程间通信的Demo

2017-07-12

Activity上动态添加Fragment

关于动态添加fragment的简单demo

2017-07-05

使用intent传值和回传值

Activity之间使用intent(可以是Bundle)传值和回传值的demo

2017-07-04

FileProvider使用demo

适配Android7.0,使用FileProvider关于使用系统拍照,裁剪图片的简单demo。

2017-06-30

空空如也

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

TA关注的人

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