自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JobScheduler的使用和原理

1、JobScheduler的使用1.1 简介JobScheduler主要用于在未来某个时间下满足一定条件时触发执行某项任务的情况,涉及的条件可以是网络、电量、时间等,例如执行特定的网络、是否只在充电时执行任务等。1.2 相关API1.2.1 JobSchedulerJobScheduler类负责将应用需要执行的任务发送给框架,以备对该应用Job的调度,是一个系统服务,可以通过如下方式获取:JobScheduler mJobScheduler = (JobScheduler) Context.g

2020-07-05 14:34:30 3039

原创 《Kotlin极简教程》笔记

第3章 Kotlin语言基础3.2 声明变量和值在Kotlin中,一切都是对象。所以,变量也是对象 (即任何变量都是根据引用类型来使用)变量分为 var(可变的)和 val(不可变的)尽量在Kotlin中首选使用 val 不变值,好处:可预测的行为、线程安全3.5 流程控制语句3.5.2 when表达式正常格式fun cases(obj: Any) { when (obj)...

2020-02-23 19:05:06 278

原创 学习笔记2-深入理解Android内核设计思想

第5章 Android进程/线程和程序内存优化5.1 Android 进程和线程进程(Process)是程序的一个运行实例,以区别于“程序”这一静态的概念而线程(Thread)则是CPU调度的基本单位。实验1 创建Activity结论:启动了3个线程:mainThread 和 2个Binder Thread实验2 创建Service结论:Service也是寄存于 ActivityTh...

2019-10-20 17:07:47 507

原创 学习笔记1-深入理解Android内核设计思想

4.1 计算机体系结构(Computer Architecture)4.1.1 冯·诺依曼结构两个深远影响的观点:采用二进制,抛弃十进制程序存储(stored-program)4.1.2 哈佛结构对冯诺依曼结构的改进与完善,区别在指令与数据并不保存在同一个存储器。这意味着:指令与数据可以有不同的的数据宽度;执行速度更快。计算机结构的基本元素:中...

2019-10-07 17:41:16 812

原创 VideoView的内存泄漏问题

解决内存泄漏之路一、 在XML文件直接用VideoView控件时,很容易造成内存泄漏,最开始出现的内存泄漏如下谷歌搜索了一下,最直接的解决方法是在代码中动态创建VideoView,初入的参数用Applicationvar mVideoView: VideoView? = nullif (mVideoView == null) { mVideoView = VideoView(...

2019-01-28 00:48:18 929

原创 HashMap解析

来源声明:本文是整理微信公众号[程序员小灰]的漫画系列文章什么是HashMapHashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些键值对(Entry)分散存储在一个数组中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。对于HashMap,我们最常使用的是两个方法:Get和Put。1.Put方法的原理例如,...

2019-01-20 22:06:25 175

原创 12月收获与体会

平时都会在印象笔记写日报和周报,现在尝试写一写月报,总结12月份的收获与体会,具体的内容:自我学习: 本月在工作之余,学习了什么知识遇到的问题: 本月在工作中遇到的技术问题及解决方法收获体会: 本月在工作学习过程中,有哪些收获或者感悟体会,有哪些优秀点,继续坚持。待改进的地方: 本月工作学习过程中,有哪些地方做的不好,以后需要改进。自我学习学习清单1、极客时间的Android开...

2018-12-31 20:23:35 377

原创 HTTP缓存和断点续传的标志

每个浏览器都自带了HTTP缓存实现功能。只需要确保每个服务器响应都提供正确的HTTP响应头标志,以指示浏览器何时可以缓存响应以及可以缓存多久。Cache-Control每个服务端资源可以通过Cache-Control标志定义其缓存策略。Cache-Control控制谁在什么条件下可以缓存响应 以及 可以缓存多久。max-age指定从请求的时间开始,允许获取的响应被重用的最长时间(单...

2018-12-23 00:39:22 699

原创 矢量图SVG的使用

矢量图SVG的简介SVG是万维网联盟 (W3C) 制定的一个基于 XML 的开放式标准,在Android Studio中,可以做为图片资源导入项目。使用矢量图SVG的好处:可以减小 APK 的尺寸,因为可以针对不同屏幕密度调整同一文件的大小,而不会降低图像质量。矢量图SVG在Android中的兼容性:在Android 5.0 (API 21) 及更高版本,已经支持SVG。而Androi...

2018-12-16 17:34:39 984

原创 11月的收获与体会

自我学习学习清单1、看完极客时间刘超老师的趣谈网络协议2、看完《深入理解Java虚拟机》3、学习CountDownLatch源代码4、学习Java的并发知识1、看完极客时间刘超老师的趣谈网络协议在印象笔记做了每章小结的记录2、看完《深入理解Java虚拟机》在百度脑图做了笔记3、学习CountDownLatch源代码输入博客一篇CountDownLatch的使用与解析4...

2018-12-02 16:55:36 255

原创 CountDownLatch的使用与解析

引言CountDownLatch是jdk1.5开始concurrent包里提供的,并发编程工具类。这个类能够使一个线程等待其他线程完成各自的工作后再执行,可用于多线程的并发执行。例如,应用程序的主线程希望在多个网络请求线程并发执行完后,刷新页面,避免串行请求导致网络请求耗时长。CountDownLatch的使用CountDownLatch的主要使用步骤是1、初始化,指定线程个数,Cou...

2018-11-23 20:44:34 3508

原创 10月收获与体会

平时都会在印象笔记写日报和周报,现在尝试写一写月报,总结10月份的收获与体会,具体的内容如下:自我学习: 本月在工作之余,学习了什么知识收获体会: 本月在工作学习过程中,有哪些收获或者感悟体会,有哪些优秀点,继续坚持。待改进的地方: 本月工作学习过程中,有哪些地方做的不好,以后需要改进。自我学习学习清单1、Glide学习2、完成《第一代码》(第2版)的重温,用Kotlin写书中...

2018-11-06 23:49:42 284

原创 Flutter的安装与使用

Flutter安装官网:https://flutter.io/get-started/install/中文网:https://flutterchina.club/get-started/install/一些具体细节(MAC)1、获取Flutter SDK(1) 在flutter官网下载页,下载最新可用的安装包(2) 解压安装包到你想安装的目录,如:cd ~/developmentu...

2018-10-28 11:29:53 594

原创 Glide的使用与解析

Glide的介绍与使用Glide是一个非常强大、优秀的图片加载框架,不但使用简单,而且加入了Activity和Fragment生命周期的管理。Glide支持拉取,解码和展示视频快照,图片和GIF动画。Glide的Api非常灵活,开发者甚至可以插入和替换成自己喜爱的任何网络栈。默认情况下,Glide使用的是一个定制化的基于HttpUrlConnection的栈,但同时也提供了与Google Vo...

2018-10-20 13:08:11 1212

原创 DownloadManager的使用和解析

DownloadManager的介绍DownloadManger是android 2.3(API 9)开始提供的系统服务,用于处理长时间的下载操作。应用场景是客户端请求一个URL地址去下载一个目标文件。DownloadManger可以构建一个后台下载服务,在发生故障或连接更改、重新启动系统等情况后,处理HTTP连接并重试下载。如果APP通过DownloadManager请求下载,那么应用注册A...

2018-10-04 18:17:04 1539

原创 AsyncTask的使用方式和版本演进

AsyncTask是一个轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI。从实现上来说,AsyncTask封装了Thread和Handler,通过AsyncTask可以方便地执行后台任务以及在主线程中访问UI,但是AsyncTask并不适合进行特别耗时的后台任务,对于特别耗时的任务来说,建议使用线程池。AsyncTask的...

2018-09-02 16:32:20 222

原创 Handler的工作原理

引入一个BUG在介绍工作原理之前,先引入一个问题(BUG),为什么在子线程中执行 new Handler() 会抛出异常?new Thread(new Runnable() { @Override public void run() { Handler handler = new Handler(); }}, "Thread#1").start...

2018-09-02 16:31:41 435

原创 MVC、MVP和MVVM

MVC1、简介MVC全名是Model View Controller,用一种业务逻辑、数据、界面显示分离的分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。如图所示。其中,Model:处理数据、业务逻辑等。View:处理界面的显示结果。Controller:起到桥梁的作用,来控制V和M层通信,达到分离视图显示和业务逻辑层。2、在An...

2018-09-02 16:30:57 197

原创 RemoteViews的作用和工作原理

RemoteViews的作用RemoteViews表示的是一个View结构,它可以在其他进程中显示,由于它在其他进程中显示,为了能够更新它的界面,RemoteViews提供了一组基础的操作用于跨进程更新它的界面。简而言之,RemoteViews的作用是在其他进程中显示并更新View界面。RemoteViews在Android中的使用场景有两种:通知栏和桌面小部件1、在通知栏上的应用...

2018-09-02 16:30:19 276

原创 RecyclerView和ConstraintLayout的介绍和使用方式

RecyclerView的介绍RecyclerView是 android-support-v7-21 开始提供的一个控件,官方对于它的介绍是:RecyclerView是 ListView的升级版本,更加先进和灵活,用于在有限的窗口中展示大量数据集。整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager、ItemDec...

2018-09-02 16:29:05 1399

原创 ThreadLocal的作用和实现原理

ThreadLocal的作用 ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定的线程中可以获取到存储的数据,对于其他线程来说则无法取到数据。ThreadLocal的主要作用轻松实现一些看起来很复杂的功能,适合以下一些应用场景。应用场景1某些数据是以线程为作用域并且不同线程具有不同的数据的副本时,就可以考虑用T...

2018-09-02 16:27:48 4478

原创 Android动态权限

Android的权限声明当APP需要访问APP沙箱外部数据或资源的区域,则需要声明权限。APP必须在AndroidManiffest文件中,通过<uses-permission>声明所需的权限。例如APP需要网络连接,则在manifest中添加一行<manifest xmlns:android="http://schemas.android.com/apk/res/a...

2018-09-02 16:26:22 234

原创 Android大尺寸图片加载问题

对于大尺寸图片加载,如何正常加载显示且不发生OOM?图片采样,应用场景:图片全部显示在控件上图片按区域加载,应用场景:高清巨图,不允许压缩,如世界地图、清明上河图图片采样图片采样的方法,是根据需要显示图片控件的大小对图片进行压缩显示。主要用法1、根据控件的宽高与原图的宽高的比例,计算出BitmapFactory.Options中inSampleSize值。例如:p...

2018-09-02 16:22:49 1559

原创 AndroidStudio Build过程解析

AndroidStudio点击build按钮后,AndroidStudio就会编译整个项目,并将apk安装到手机上,这个过程就是Android工程编译打包过程。主要的流程是编译 >> DEX >> 打包 >> 签名。APK构建概述下图是谷歌官网给出的一个典型的APK构建过程。主要有两个过程:编译过程输入是本工程的文件以及依赖的...

2018-09-02 16:14:18 970

翻译 ViewAnimator教程

本文翻译自ViewAnimator Tutorial With Example In Android Studio 在Android中,ViewAnimator是FrameLayout的一个子类,用来做Views之间的切换。它是一个变换控件的 元素,帮助我们在Views之间(如TextView, ImageView或者其他layout)添加变换。它有助于在屏幕view添加动画。

2018-01-02 22:32:24 7005 3

原创 Binder、AIDL学习笔记

本文是任玉刚《Android开发艺术探索》的学习笔记,介绍Binder的使用以及上层原理

2017-12-10 19:05:10 361

原创 自动打开国航APP并签到

分析需求需求国航APP签到可以送里程,写一个Demo自动打开国航,并且跳转签到页面,自动签到主要步骤启动国航APP自动点击:(1)点击底部button跳转到签到页面;(2)点击“签到”开机启动Demo

2017-12-02 17:02:35 3666 5

原创 Android Text的宽高

测量Text宽度和高度的方法Paint.measureText(测量文本的宽度) Paint paint = new Paint(); paint.setTextSize(size); float strWidth = paint.measureText(str);这个宽度大于下面第2种方法的textBound.width(),因为包含文字两边的留白,这个字体宽度在英文叫Glyp

2017-10-15 12:03:56 607

原创 在Mac OS 10.12 编译Android源码:错误小结

在Mac OS 10.12 编译Android源码的错误小结

2017-10-01 12:35:38 768

翻译 【译文】Android lifecycle-aware components codelab

原文地址:https://codelabs.developers.google.com/codelabs/android-lifecycles/#01.介绍ComponentsArchitecture Components是一组Android库,可以帮助你用一种健壮的、可测试的、可维护的方式来架构你的APP。

2017-08-17 00:36:16 435

原创 Android 单选组合框

单选组合框Android RadioGroup和RadioButton案例及详解 https://my.oschina.net/amigos/blog/59261

2017-07-24 10:40:43 1087

原创 ViewPager学习

官方文档:https://developer.android.com/reference/android/support/v4/view/ViewPager.html一、使用步骤(1)在布局中新建一个ViewPager的控件<android.support.v4.view.ViewPager android:id="@+id/view_pager"

2017-07-23 18:37:09 271

原创 面向对象的六大原则

作为一个非科班出身的程序猿,在最开始敲面向对象的代码时,没有“六大原则”的概念。后来看的书和敲的代码越来越多,“六大原则”逐渐熟悉起来,就如最开始只知道武功招数,后来经高人指点获得内功心法,有种豁然开朗的感觉。今天简单总结“六大原则”,以后不断扩展补充。

2017-07-16 18:45:27 199

原创 Java的委托模式

简单说本类的方法调用其他类的方法去工作,通俗讲是我要做的一部分工作,别人可以替我做,ok,让它做

2017-05-01 13:17:16 3724 1

原创 Android的多媒体信息获取

0、MIME类型MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。类型/子类型 >> 扩展名 参考http://www.w3school.com.cn/media/media_mimeref.asp1、从系统的图库列表中,选择

2017-03-26 15:26:30 706

原创 RecyclerView的观察者模式

一、用途:RecyclerView根据数据源的更新,让Item更新UI观察者:每个item的AdapterDataObserver被观察者:RecyclerView.Adapter类中的mObservable,可以发送更新数据的通知:全局更新、局部更新、插入更新、删除更新等public static abstract class Adapter { private fi

2017-03-19 18:46:11 3550

原创 BUG小结

今天遇到一个bug,现象是Activity启动显示后,锁屏(此时Activity发了一条Message),然后亮屏在解锁页面(一直亮着)30秒后Handler处理Message>>调用了onTitleBackPressed里的onBakPressed方法,造成的崩溃:java.lang.IllegalStateException: Can not perform this action a

2017-03-11 01:49:40 556

原创 Fragment、Activity的知识点总结

一、Fragment1、Fragment初探打开或新建activity_main.xml作为主Activity的布局文件,在里面加入两个Fragment的引用,使用android:name前缀来引用具体的 <fragment android:id="@+id/fragment1" android:name="com.example.fragmentdemo.

2017-03-05 12:53:14 548

原创 认识RecyclerView

本文主要是总结自己对RecyclerView的认识,主要内容有RecyclerView用法、与Listview的adapter/缓存个数对比、缓存机制、两种position类型等

2016-12-04 17:23:36 909

原创 Android横竖屏总结

1、横竖屏切换时Android默认会重新调用各个生命周期,如果要禁止重新调用

2016-01-07 10:54:02 436

空空如也

空空如也

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

TA关注的人

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