
Android
文章平均质量分 94
清风灵叶Aisen
这个作者很懒,什么都没留下…
展开
-
JobScheduler的使用和原理
1、JobScheduler的使用1.1 简介JobScheduler主要用于在未来某个时间下满足一定条件时触发执行某项任务的情况,涉及的条件可以是网络、电量、时间等,例如执行特定的网络、是否只在充电时执行任务等。1.2 相关API1.2.1 JobSchedulerJobScheduler类负责将应用需要执行的任务发送给框架,以备对该应用Job的调度,是一个系统服务,可以通过如下方式获取:JobScheduler mJobScheduler = (JobScheduler) Context.g原创 2020-07-05 14:34:30 · 3359 阅读 · 0 评论 -
《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 · 321 阅读 · 0 评论 -
学习笔记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 · 563 阅读 · 0 评论 -
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 · 460 阅读 · 0 评论 -
AndroidStudio Build过程解析
AndroidStudio点击build按钮后,AndroidStudio就会编译整个项目,并将apk安装到手机上,这个过程就是Android工程编译打包过程。主要的流程是编译 >> DEX >> 打包 >> 签名。APK构建概述下图是谷歌官网给出的一个典型的APK构建过程。主要有两个过程:编译过程输入是本工程的文件以及依赖的...原创 2018-09-02 16:14:18 · 1056 阅读 · 0 评论 -
Android大尺寸图片加载问题
对于大尺寸图片加载,如何正常加载显示且不发生OOM?图片采样,应用场景:图片全部显示在控件上图片按区域加载,应用场景:高清巨图,不允许压缩,如世界地图、清明上河图图片采样图片采样的方法,是根据需要显示图片控件的大小对图片进行压缩显示。主要用法1、根据控件的宽高与原图的宽高的比例,计算出BitmapFactory.Options中inSampleSize值。例如:p...原创 2018-09-02 16:22:49 · 1589 阅读 · 0 评论 -
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 · 276 阅读 · 0 评论 -
ThreadLocal的作用和实现原理
ThreadLocal的作用 ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定的线程中可以获取到存储的数据,对于其他线程来说则无法取到数据。ThreadLocal的主要作用轻松实现一些看起来很复杂的功能,适合以下一些应用场景。应用场景1某些数据是以线程为作用域并且不同线程具有不同的数据的副本时,就可以考虑用T...原创 2018-09-02 16:27:48 · 4528 阅读 · 0 评论 -
ViewAnimator教程
本文翻译自ViewAnimator Tutorial With Example In Android Studio 在Android中,ViewAnimator是FrameLayout的一个子类,用来做Views之间的切换。它是一个变换控件的 元素,帮助我们在Views之间(如TextView, ImageView或者其他layout)添加变换。它有助于在屏幕view添加动画。翻译 2018-01-02 22:32:24 · 7131 阅读 · 3 评论 -
自动打开国航APP并签到
分析需求需求国航APP签到可以送里程,写一个Demo自动打开国航,并且跳转签到页面,自动签到主要步骤启动国航APP自动点击:(1)点击底部button跳转到签到页面;(2)点击“签到”开机启动Demo原创 2017-12-02 17:02:35 · 3779 阅读 · 5 评论 -
Binder、AIDL学习笔记
本文是任玉刚《Android开发艺术探索》的学习笔记,介绍Binder的使用以及上层原理原创 2017-12-10 19:05:10 · 412 阅读 · 0 评论 -
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 · 655 阅读 · 0 评论 -
Android 单选组合框
单选组合框Android RadioGroup和RadioButton案例及详解 https://my.oschina.net/amigos/blog/59261原创 2017-07-24 10:40:43 · 1120 阅读 · 0 评论 -
在Mac OS 10.12 编译Android源码:错误小结
在Mac OS 10.12 编译Android源码的错误小结原创 2017-10-01 12:35:38 · 805 阅读 · 0 评论 -
【译文】Android lifecycle-aware components codelab
原文地址:https://codelabs.developers.google.com/codelabs/android-lifecycles/#01.介绍ComponentsArchitecture Components是一组Android库,可以帮助你用一种健壮的、可测试的、可维护的方式来架构你的APP。翻译 2017-08-17 00:36:16 · 476 阅读 · 0 评论 -
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 · 290 阅读 · 0 评论 -
RecyclerView和ConstraintLayout的介绍和使用方式
RecyclerView的介绍RecyclerView是 android-support-v7-21 开始提供的一个控件,官方对于它的介绍是:RecyclerView是 ListView的升级版本,更加先进和灵活,用于在有限的窗口中展示大量数据集。整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager、ItemDec...原创 2018-09-02 16:29:05 · 1451 阅读 · 0 评论 -
RemoteViews的作用和工作原理
RemoteViews的作用RemoteViews表示的是一个View结构,它可以在其他进程中显示,由于它在其他进程中显示,为了能够更新它的界面,RemoteViews提供了一组基础的操作用于跨进程更新它的界面。简而言之,RemoteViews的作用是在其他进程中显示并更新View界面。RemoteViews在Android中的使用场景有两种:通知栏和桌面小部件1、在通知栏上的应用...原创 2018-09-02 16:30:19 · 317 阅读 · 0 评论 -
MVC、MVP和MVVM
MVC1、简介MVC全名是Model View Controller,用一种业务逻辑、数据、界面显示分离的分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。如图所示。其中,Model:处理数据、业务逻辑等。View:处理界面的显示结果。Controller:起到桥梁的作用,来控制V和M层通信,达到分离视图显示和业务逻辑层。2、在An...原创 2018-09-02 16:30:57 · 215 阅读 · 0 评论 -
学习笔记1-深入理解Android内核设计思想
4.1 计算机体系结构(Computer Architecture)4.1.1 冯·诺依曼结构两个深远影响的观点:采用二进制,抛弃十进制程序存储(stored-program)4.1.2 哈佛结构对冯诺依曼结构的改进与完善,区别在指令与数据并不保存在同一个存储器。这意味着:指令与数据可以有不同的的数据宽度;执行速度更快。计算机结构的基本元素:中...原创 2019-10-07 17:41:16 · 891 阅读 · 0 评论 -
VideoView的内存泄漏问题
解决内存泄漏之路一、 在XML文件直接用VideoView控件时,很容易造成内存泄漏,最开始出现的内存泄漏如下谷歌搜索了一下,最直接的解决方法是在代码中动态创建VideoView,初入的参数用Applicationvar mVideoView: VideoView? = nullif (mVideoView == null) { mVideoView = VideoView(...原创 2019-01-28 00:48:18 · 980 阅读 · 0 评论 -
HashMap解析
来源声明:本文是整理微信公众号[程序员小灰]的漫画系列文章什么是HashMapHashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些键值对(Entry)分散存储在一个数组中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。对于HashMap,我们最常使用的是两个方法:Get和Put。1.Put方法的原理例如,...原创 2019-01-20 22:06:25 · 192 阅读 · 0 评论 -
12月收获与体会
平时都会在印象笔记写日报和周报,现在尝试写一写月报,总结12月份的收获与体会,具体的内容:自我学习: 本月在工作之余,学习了什么知识遇到的问题: 本月在工作中遇到的技术问题及解决方法收获体会: 本月在工作学习过程中,有哪些收获或者感悟体会,有哪些优秀点,继续坚持。待改进的地方: 本月工作学习过程中,有哪些地方做的不好,以后需要改进。自我学习学习清单1、极客时间的Android开...原创 2018-12-31 20:23:35 · 401 阅读 · 0 评论 -
矢量图SVG的使用
矢量图SVG的简介SVG是万维网联盟 (W3C) 制定的一个基于 XML 的开放式标准,在Android Studio中,可以做为图片资源导入项目。使用矢量图SVG的好处:可以减小 APK 的尺寸,因为可以针对不同屏幕密度调整同一文件的大小,而不会降低图像质量。矢量图SVG在Android中的兼容性:在Android 5.0 (API 21) 及更高版本,已经支持SVG。而Androi...原创 2018-12-16 17:34:39 · 1046 阅读 · 0 评论 -
11月的收获与体会
自我学习学习清单1、看完极客时间刘超老师的趣谈网络协议2、看完《深入理解Java虚拟机》3、学习CountDownLatch源代码4、学习Java的并发知识1、看完极客时间刘超老师的趣谈网络协议在印象笔记做了每章小结的记录2、看完《深入理解Java虚拟机》在百度脑图做了笔记3、学习CountDownLatch源代码输入博客一篇CountDownLatch的使用与解析4...原创 2018-12-02 16:55:36 · 284 阅读 · 0 评论 -
CountDownLatch的使用与解析
引言CountDownLatch是jdk1.5开始concurrent包里提供的,并发编程工具类。这个类能够使一个线程等待其他线程完成各自的工作后再执行,可用于多线程的并发执行。例如,应用程序的主线程希望在多个网络请求线程并发执行完后,刷新页面,避免串行请求导致网络请求耗时长。CountDownLatch的使用CountDownLatch的主要使用步骤是1、初始化,指定线程个数,Cou...原创 2018-11-23 20:44:34 · 3566 阅读 · 0 评论 -
10月收获与体会
平时都会在印象笔记写日报和周报,现在尝试写一写月报,总结10月份的收获与体会,具体的内容如下:自我学习: 本月在工作之余,学习了什么知识收获体会: 本月在工作学习过程中,有哪些收获或者感悟体会,有哪些优秀点,继续坚持。待改进的地方: 本月工作学习过程中,有哪些地方做的不好,以后需要改进。自我学习学习清单1、Glide学习2、完成《第一代码》(第2版)的重温,用Kotlin写书中...原创 2018-11-06 23:49:42 · 313 阅读 · 0 评论 -
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 · 655 阅读 · 0 评论 -
Glide的使用与解析
Glide的介绍与使用Glide是一个非常强大、优秀的图片加载框架,不但使用简单,而且加入了Activity和Fragment生命周期的管理。Glide支持拉取,解码和展示视频快照,图片和GIF动画。Glide的Api非常灵活,开发者甚至可以插入和替换成自己喜爱的任何网络栈。默认情况下,Glide使用的是一个定制化的基于HttpUrlConnection的栈,但同时也提供了与Google Vo...原创 2018-10-20 13:08:11 · 1308 阅读 · 0 评论 -
DownloadManager的使用和解析
DownloadManager的介绍DownloadManger是android 2.3(API 9)开始提供的系统服务,用于处理长时间的下载操作。应用场景是客户端请求一个URL地址去下载一个目标文件。DownloadManger可以构建一个后台下载服务,在发生故障或连接更改、重新启动系统等情况后,处理HTTP连接并重试下载。如果APP通过DownloadManager请求下载,那么应用注册A...原创 2018-10-04 18:17:04 · 1698 阅读 · 0 评论 -
AsyncTask的使用方式和版本演进
AsyncTask是一个轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI。从实现上来说,AsyncTask封装了Thread和Handler,通过AsyncTask可以方便地执行后台任务以及在主线程中访问UI,但是AsyncTask并不适合进行特别耗时的后台任务,对于特别耗时的任务来说,建议使用线程池。AsyncTask的...原创 2018-09-02 16:32:20 · 243 阅读 · 0 评论 -
Java的委托模式
简单说本类的方法调用其他类的方法去工作,通俗讲是我要做的一部分工作,别人可以替我做,ok,让它做原创 2017-05-01 13:17:16 · 3798 阅读 · 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 · 741 阅读 · 0 评论 -
迷你浏览器——WebView学习
MiniBrowser.javapublic class MiniBrowser extends Activity { EditText url; WebView showWebView; Button searchButton; String urlStr = null; @Override protected void onCreate(Bundle savedInstanc原创 2015-01-12 22:41:28 · 590 阅读 · 0 评论 -
加速度传感器Accelerometer
Android系统为传感器支持强大的管理服务,开发传感器应用的步骤如下:(1)调用Context的 getSystemService(Context.SENSOR_SERVICE)方法获取Sensor Manager对象,SensorManager对象代表系统的传感器管理服务。(2)调用SensorManager的getDefaultSensor(int type)方法来获取制定类型的传感原创 2015-01-13 13:40:23 · 861 阅读 · 0 评论 -
使用HTTP协议下载文件
为了测试方便,在自己的电脑上开一个web服务Tomcat,在Tomcat的webapps文件夹里放测试下载用的文件在cmd的ipconfig指令下查看自己的主机的IP地址。之前没有接触过Tomcat,就先按网上介绍的安装教程下载Tomcat,并在Eclipse配置好Tomcathttp://blog.chinaunix.net/uid-25434387-id-167705.html原创 2014-12-07 00:26:04 · 7191 阅读 · 1 评论 -
SQLite使用方法
Android系统集成了一个轻量级的数据库SQLite,是一个嵌入式的数据库引擎,适用于资源有限的设备适量数据存取Android提供了SQLiteOpenHelper类,作为访问SQLite的助手类,通常都会继承SQLiteOpenHelper开发子类SQLiteOpenHelper类提供两个方面的功能:第一,getReadableDatabase(),getWritabl原创 2014-12-06 09:52:58 · 625 阅读 · 0 评论 -
Activity生命周期
Activity的七个生命周期函数onCreate()onStart()onResume() 前三个是android系统自动调用onRestart() onPause() 当一个电话时当前Activity执行的操作,一般用来保存数据, 再次启动为onResume()onStop() 再次启动为onRestart()>>onStart()>>onResume()原创 2014-12-04 09:59:38 · 601 阅读 · 0 评论 -
Activity布局
LinearLayout布局属性(线性布局)android:id 为控件指定相应的ID android:text 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符 android:grivity 控件的基本位置,比如说居中,居右等位置 android:textSize原创 2014-12-04 10:29:52 · 437 阅读 · 0 评论 -
Service-监听手机来电
public class MonitorPhone extends Activity { TelephonyManager tManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layo原创 2014-12-19 09:04:27 · 1150 阅读 · 2 评论