
Android进阶
文章平均质量分 83
一枚-狗子
这个作者很懒,什么都没留下…
展开
-
Android进阶之Activity生命周期+Activity难点
1 Activity的生命周期图 只有Activity之间的转换才会调用生命周期函数。 2 Activity的生命周期调用解析2.1 半遮挡情况onPause: Called when the system is about to start resuming another activity. 在启动一个半遮挡或者透明的Activity放置在栈顶时,当前Activ...原创 2015-08-09 22:04:40 · 974 阅读 · 0 评论 -
Android进阶之Activity四种启动模式和task相关
1 启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置; 启动模式有4种,分别为standard、singleTop、singleTask、singleInstance; Activity的管理方式:任务栈。任务栈采用的结构: “后进先出” 的栈结构。每按一次Back键,就有一个...原创 2015-08-03 22:49:30 · 2012 阅读 · 0 评论 -
Android进阶之深入理解BroadcastReceiver
1 介绍1.1 定义 广播是一个全局的监听器,属于Android四大组件之一。Android广播分为两个角色:广播发送者、广播接收者。1.2 作用 监听/接收应用App发出的广播消息,并做出响应。1.3 应用场景Android不同组件间的通信(含 :应用内 / 不同应用之间)多线程通信与Android系统在特定情况下的通信,如:电话呼入时、网络可用时。...原创 2018-01-28 09:52:41 · 528 阅读 · 2 评论 -
Android进阶之深入理解Service
1 介绍 Service是android的一种机制。Service是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序的上下文里。需要通过某一个Activity或其他Context对象来调用。1.1 Service的生命周期 被启动的服务的生命周期:如果一个Service被某个Activity调用 Context.startService方法...原创 2018-01-31 23:58:04 · 690 阅读 · 1 评论 -
Android进阶之深入理解ContentProvider
1 介绍 ContentProvider(内容提供者):为存储和获取数据提供统一的接口。使用ContentProvider,应用程序可以实现跨进程通信–App间数据共享。Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)。 图片来源于:Android基础入门教程——4.4.1 ContentProvider初探2 ...原创 2018-02-02 09:47:12 · 706 阅读 · 0 评论 -
Android进阶之四大组件综述
本篇文章概述分析Android四大组件的机制,插入本人其他的博客链接方便阅读,以及为接下来写四大组件的内部工作过程铺垫。1 Android四大组件的运行状态 Android四大组件包括Activity、Service、BroadcastReceiver和ContentProvider。除了BroadcastReceiver以外,其他三种组件都必须在AndroidManifest中...原创 2018-05-13 22:20:41 · 603 阅读 · 0 评论 -
Android进阶之通过自定义属性-自定义更多界面
1 自定义复合控件当使用简单布局定义界面时,客户端对手机内存的消耗是巨大的,同时过多的布局嵌套让代码显得异常的凌乱。因此,解决方式就是自定义控件。接下来,一步一步来实现自定义界面。1.1 实现效果1.2 一般步骤1.2.1 自定义View的一般步骤:(1).自定义View的属性 (2).在View的构造方法中获得我们自定义的属性 (3).重写onMesure (不是必须的) (4).重写onD原创 2015-07-28 22:32:17 · 1252 阅读 · 0 评论 -
Android进阶UI之加载数据等待时,小人奔跑进度动画对话框
1 概述Android中,常见的动画模式有两种:一种是帧动画(Frame Animation),一种是补间动画(Tween Animation)。帧动画是提供了一种逐帧播放图片的动画方式,播放事先做好的图像,与gif图片原理类似,就像是在放电影一样。补间动画可以实现View组件的移动、放大、缩小以及渐变等效果。2 实现图3 实现原理3.1 首先我们在项目的res目录下新建一下anim文件夹,然后新建原创 2016-05-29 23:05:35 · 7070 阅读 · 3 评论 -
Android进阶UI之ImageView设置长度高度为wrap_content时高度根据图片比例自适应
1 示例<ImageView android:id="@+id/img_1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:adjustViewBounds原创 2017-04-20 20:48:13 · 6427 阅读 · 0 评论 -
Android自定义View最佳实践
1 自定义View的分类1.1 继承View重写onDraw方法这种方法主要用于实现一些不规则的效果,即这种效果不方便通过布局的组合方式来达到。需要通过绘制的方式来实现,即重写onDraw()方法。一般就是想自己实现某些图形了,因为原生控件已经满足不了你了,很显然这需要绘制的方式来完成,采用这个方式需要自身支=warp_content,并且pading也要自己处理,比较考验你的功底了。2 自...原创 2019-05-05 23:42:03 · 3248 阅读 · 0 评论 -
Android深入理解RemoteViews
1 前言RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,RemoteViews表示的是一种View的结构,他可以在其他的进程中显示,最常用的就是通知栏和桌面小组件。2 RemoteViews应用2.1 在通知栏上的应用2.1.1 什么是通知通知是在常规UI界面之外向用户展示消息的工具,当系统发出通知时,它会以图表的形式显示在状态栏中。2.1.2...原创 2019-08-11 22:45:52 · 2305 阅读 · 0 评论 -
Android进阶之深入理解Activity的onActivityResult
1 Activity的onActivityResult使用起来非常麻烦,为什么不设计成回调?答:答:我觉得这是一个很有趣的问题,有趣的除了题目本身,也在于其引申出的感悟。我们在使用和学习Android Framework相关的内容时,除了要了解其内部实现机制,还要求自己要试着去反思,或者提问其设计的目的,这样才能帮助我们更好的理解和吸收其设计的精髓之处。1.1 这道题想考察什么?答:(1)考察要点●是否熟悉onActivityResult的用法(初级)●是否思考过用回调替代onActivityR原创 2020-11-25 23:54:14 · 4761 阅读 · 2 评论 -
Android刘海屏适配方案
1 什么是刘海屏屏幕的正上方居中位置(下图黑色区域)会被挖掉一个孔,屏幕被挖掉的区域无法正常显示内容,这种类型的屏幕就是刘海屏,也有其他叫法:挖孔屏、凹凸屏等等,这里统一按刘海屏命名。 现在市场上的情况来说,“刘海屏”主要分成两类,一类是标准的 Android P Api,另外一类就是厂商在 Android P 以下的系统,做的特殊适配。2 刘海屏适配方案2.1 需要适配刘海屏的页面(...原创 2019-02-14 00:42:06 · 4318 阅读 · 0 评论 -
Android进阶之深入理解Context
1 Context概念(1)在启动Activity/Service,发送广播,获取系统资源,获取系统服务等都需要Context的参与,可见Context的常见性。到底什么是Context,Context字面意思上下文,或者叫做场景,也就是用户与操作系统操作的一个过程,比如你打电话,场景包括电话程序对应的界面,以及隐藏在背后的数据。1.1 Android系统的角度Context是什么呢?Context是一个场景,代表与操作系统的交互的一种过程,是维持Android程序中各组件能够正常工作的一个核心功能类转载 2020-05-29 10:14:58 · 513 阅读 · 0 评论 -
Android进阶之数据加密算法
1 Des加密1.1 什么是Des加密?DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力24小时内即可被破解。1.2 加密有哪些特点?1.3 应用场景?1.4 算法实现?1.5 学习链接Android数据加密之Des加密...原创 2020-03-22 11:40:40 · 346 阅读 · 0 评论 -
Android源码分析之AsyncTask
1 AsnyncTask1.1 概念首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的。AsyncTask内部封装了Thread和Handler,可以让我们在后台进行计算并且把计算的结果及时更新到UI上,AsyncTask的作用就是简化Thread+Handler。所有Andr原创 2017-01-11 18:32:57 · 992 阅读 · 0 评论 -
Android进阶之深入理解网络编程
1 详解TCP1.1 TCP是什么? TCP是Tranfer Control Protocol的简称,TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一...原创 2018-01-23 23:55:07 · 2534 阅读 · 1 评论 -
Android进阶之混淆配置
1、proguardFiles会让sdk中配置的混淆文件不能在app中生效,sdk中配置consumerProguardFiles即可实现在app中生效。debug{ consumerProguardFiles 'proguard-rules.pro'}2、区别:①proguardFiles是用于构建sdk的混淆规则;(即是:sdk单独先混淆)②consumerProgua...原创 2019-12-22 17:44:07 · 1036 阅读 · 0 评论 -
Android进阶之7.0适配-应用之间共享文件(FileProvider)
1 问题(1)以下是一段简单的代码,它调用系统的相机app来拍摄照片:void takePhoto() { String cameraPhotoPath = getApplicationContext().getExternalCacheDir().getPath(); File cameraFile = new File(cameraPhotoPath, "test.jpg"...原创 2019-12-15 13:57:07 · 26071 阅读 · 0 评论 -
Android进阶之通识基础
1 数据类型字节数1.1 字节一个字节,8个二进制位1.2 字节数(1) 32位编译器(2) 64位编译器2 正负数二进制的表示2.1 正负数二进制的表示(1)正数的值,第一位以0作为正数标识,直接去二进制转10进制,方便计算0开头对应的值。无符号数表示范围为0——255,如下:①最大为11111111,127+1*26+125+1*24+123+1*22+121+1*2...原创 2018-12-01 00:44:34 · 273 阅读 · 0 评论 -
Android进阶之将注解@IntDef @StringDef替代枚举类(enum)
1 概述Enum是java中一种包含固定常数的类型。当我们需要预先定义一些值,并限定范围时,使用 Enum,来做到编写和编译都查错。 Java的Enum的实质是特殊单例的静态成员变量,可以在编写器,编译器做到各种静态检查防呆;在运行期,所有枚举类作为单例,全部加载到内存中。 因此,Enum增加了APK的内存占用,比常量多5到10倍的内存占用。所以放弃枚举,就是关于安卓应用性能的内存占用部...原创 2018-12-02 12:06:31 · 1600 阅读 · 6 评论 -
Android进阶之探究ActivityLifecycleCallbacks
1 ActivityLifecycleCallbacks用来监听所有Activity的生命周期回调Activity 的每一个生命周期都对应 ActivityLifecycleCallbacks 接口中的一个方法,比如 onActivityCreated 回调是在 Activity 的 onCreate 方法中调用 getApplication().dispatchActivityCreated(...原创 2018-12-15 15:37:31 · 843 阅读 · 0 评论 -
Android进阶之换肤实现技术思路
1 参考链接(时间紧急,稍后测试换肤项目与写博客)Android换肤实现技术思路总结MultipleThemeAndroid-Skin-Loader基于插件式的Android换肤框架:ChangeSkinAndroid 切换主题以及换肤的实现2 换肤需求归类为两种(1)白天/黑夜主题切换(或者别的名字,通常2套),如同花顺/自选股/天天动听等,UI表现为一个switcher。 (2)多种主题切换,转载 2016-12-28 21:46:30 · 637 阅读 · 0 评论 -
Android进阶之View.inflate和LayoutInflater.inflate方法区别
1 LayoutInflater LayoutInflater用于加载布局的。加载布局的任务通常都是在Activity中调用setContentView()方法来完成的。其实setContentView()方法的内部也是使用LayoutInflater来加载布局的,只不过这部分源码是内部的。 我们先看下LayoutInflater的基本用法,首先需要获取到LayoutInflater的...原创 2018-09-02 11:39:43 · 15755 阅读 · 4 评论 -
Android进阶之Android build构建流程
1 Apk构建基本流程 详细研究,把代码编译成一个apk文件并安装到手机上的这个过程中,是怎么把代码和资源文件打包成一个apk文件,并安装到手机上的? 此图描述了:Android Project经过编译和打包后生成apk文件,然后再经过签名,就可以安装到设备上。 将一个实际的apk文件后缀改为zip并解压后,得到的内容如下。classes.dex…resources...原创 2018-06-19 00:12:46 · 4015 阅读 · 4 评论 -
Android进阶之用起来很卡,解决方法
最近开始安装使用android studio,痛苦的发现安装或者后期升级后as运行时非常的卡。于是,深入的研究解决方法并不断的尝试,最后总结出如下的两点。一、工具软件配置 1、解决网络连接问题(1)问题描述 检查你的 Android SDK,卡上很长时间,需要更新则需要进行安装。(2)方法步骤 ①跳过这一步,可在Android Studio安装目录下的 bin 目录下,找到 idea.prop原创 2015-08-13 09:33:03 · 17221 阅读 · 6 评论 -
Android进阶之WebView使用与兼容4.+滑动到顶部
1 自定义WebViewpublic class FoundWebView extends WebView { ScrollInterface web; public FoundWebView(Context context) { super(context); } public FoundWebView(Context context, Attribut原创 2016-07-11 16:44:40 · 7727 阅读 · 0 评论 -
Android进阶之Fragment与Activity之间的数据交互
1概念1 为什么因为Fragment和Activity一样是具有生命周期,不是一般的bean通过构造函数传值,会造成异常。2 参考链接Activity和Fragment传递数据的两种方式【Fragment精深系列4】Fragment与Activity之间的数据交互2 Activity把值传递给Fragment2.1 第一种方式,也是最常用的方式,就是使用Bundle来传递参数(1)宿主Activit原创 2016-12-28 11:24:01 · 62932 阅读 · 23 评论 -
Android进阶之热修复
1 热修复概念1.1 什么是热修复一般的bug修复:都是等下一个版本解决,然后发布新的apk。 热修复:可以直接在客户已经安装的程序当中修复bug。1.2 热修复原理图 2 热修复框架(1)阿里系:DeXposed、Andfix。从底层C的二进制来入手的。(2)腾讯系:Tinker、QQ空间补丁技术。Java类加载机制来入手的。腾讯系的第三方在线更新平台-Bugly(3)各大平台对比【技术干货】A原创 2016-12-28 22:20:48 · 670 阅读 · 0 评论 -
Android进阶之开发问题笔记
0 工作总结当天问题,当天解决,坚决不过周。(2017/5/7)Git提交前先review代码,确认无误再提交;每次提交的内容是一个功能点,方便查找功能、代码。(2017/7/2)每一个功能点都必须经过自测,才能提交测试。(2017/7/2)控制情绪。(2017/8/8)考虑问题更加全面,非常注意:新版本、老版本互相兼容(2017/12/7)对需求或者问题,能够自己独立思考(独立分...原创 2017-06-26 22:37:40 · 16202 阅读 · 7 评论 -
Android进阶之6.0运行时权限处理
1 概述 对于6.0的几个主要的变化,查看查看官网的这篇文章Runtime Permissions,其中包含Runtime Permissions。 Android 6.0系统中需要动态授权的危险权限表,一共是9组27个权限。当我们在动态授权时,只要用户允许了一组当中的一个权限,那么系统默认会通过整组的权限,所以我们在动态授权时每组只要将一个permission进行授权即可。 ...原创 2016-07-11 18:21:35 · 808 阅读 · 0 评论 -
Android进阶之数据库框架ormlite使用
1 ormlite是什么? 官网www.ormlite.com,它的英文全称是Object Relational Mapping,意思是对象关系映射,在JavaEE开发就有一个类似的数据库映射框架——Hibernate。简单来说,就是我们定义一个实体类,利用这个框架,它可以帮我们把这个实体映射到我们的数据库中(SQLite),数据中的字段就是我们定义实体的成员变量。2 为什么要用ormlite?2原创 2017-07-30 22:31:17 · 848 阅读 · 1 评论 -
Android进阶之缓存机制与实现
1 问题描述1.1 问题 在正常情况下进入app首页后,图片加载完成,接着退出app;然后断开网络,再进入app首页,页面显示空白。为什么?1.1 问题 Android开发本质上就是手机和互联网中的web服务器之间进行通信,就必然需要从服务端获取数据,而反复通过网络获取数据是比较耗时的,特别是访问比较多的时候,会极大影响了性能;以及在断网情况下Android获取到的数据就为空。Android中可转载 2016-08-25 11:50:37 · 9487 阅读 · 8 评论 -
Android进阶之解决RecyclerView notifyItem闪屏问题
1 RecyclerView刷新方法1.1操作内容ListView的getView方法的渲染数据部分的代码相当于onBindViewHolder(),如果调用adapter.notifyDataSetChanged()方法,会重新调用onBindViewHolder()方法。1.2其他刷新方法除了adapter.notifyDataSetChanged()这个方法之外,新的Adapter还提供了其他原创 2016-10-13 20:22:35 · 28150 阅读 · 13 评论 -
Android进阶之进程优先级及提高优先级的方法(进程保活)
1 生命周期 service:是一个后台服务,专门用来处理常驻后台的工作的组件。系统会尽可能长的延续一个应用程序进程,但在内存过低的时候,仍然会不可避免需要移除旧的进程。为了决定哪些进程留下,哪些进程被杀死,系统根据在进程中在运行的组件及组件的状态,为每一个进程分配了一个优先级等级。优先级最低的进程首先被杀死。这个进程重要性的层次结构主要有五个等级。 Android会尽可能高的估量一个...原创 2017-01-18 18:28:50 · 23721 阅读 · 0 评论 -
Android进阶之使用multidex(产生多个dex)解决Dex超出方法数65535的限制
1 概述1.1 为什么要拆包随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),出现了一个 dex 包装不下的情况,出现65536问题。1.2 为什么方法数不能超过65535在Dalvik指令集里,调用方法的invoke-kind指令中,method reference index只给了16bits,最多能调用6553原创 2016-07-27 16:20:10 · 3240 阅读 · 0 评论