![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 95
HankingHu
这个作者很懒,什么都没留下…
展开
-
图解Android中的Binder机制
前言Binder做为Android中核心机制,对于理解Android系统是必不可少的,关于binder的文章也有很多,但是每次看总感觉看的不是很懂,到底什么才是binder机制?为什么要使用binder机制?binder机制又是怎样运行的呢?这些问题只是了解binder机制是不够的,需要从Android的整体系统出发来分析,在我找了很多资料后,真正的弄懂了binder机制,相信看完这篇文章大家也...原创 2020-04-05 23:17:35 · 20836 阅读 · 17 评论 -
Android中Handler问题汇总
前言handler机制几乎是Android面试时必问的问题,虽然看过很多次handler源码,但是有些面试官问的问题却不一定能够回答出来,趁着机会总结一下面试中所覆盖的handler知识点。1、讲讲 Handler 的底层实现原理?要理解handler的实现原理,其实最重要的是理解Looper的实现原理,Looper才是实现handler机制的核心。任何一个handler在使用sendMes...原创 2020-04-04 16:56:20 · 1812 阅读 · 0 评论 -
Android自定义View之实现简单炫酷的球体进度球
前言最近一直在研究自定义view,正好项目中有一个根据下载进度来实现球体进度的需求,所以自己写了个进度球,代码非常简单。先看下效果:效果还是非常不错的。准备知识要实现上面的效果我们只要掌握两个知识点就好了,一个是Handler机制,用于发消息刷新我们的进度球,一个是clipDrawable。网上关于Handler的教程很多,这里重点介绍一下clipDrawable,进度球的实现全靠cli...原创 2018-12-26 19:57:39 · 2041 阅读 · 0 评论 -
史上最全面的Android学习资源汇总
Android应用层View绘制流程与源码分析 还记得前面《Android应用setContentView与LayoutInflater加载解析机制源码分析》这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系:看见没有,如上图中id为content的内容就是整个...转载 2018-12-20 10:27:02 · 728 阅读 · 0 评论 -
LocalBroadcastManager从使用到源码分析
前言自从工作后好长时间都没写博客了,一来是实在太忙,二来也沉不下心来看技术文章心态比之前在学校的时候浮躁很多。最近项目里面用到了LocalBroadcastManager虽然用起来很简单但是源码实现起来确实很值得学习的。所以本文先介绍LocalBroadcastManager的使用,然后再进一步分析源码的实现和相关的设计模式使用。1.什么是LocalBroadcastManagerLocal...原创 2018-11-04 18:29:04 · 749 阅读 · 0 评论 -
project生成aar文件并且在另一个project中使用遇到的坑和解决方案
前言最近公司要一个项目的代码合并到另一个项目中,本来很简单使用import module就可以完成的,但是导入module的时候发现导入不了,原因是另一个项目中还依赖了其他的项目,直接到module肯定是不行了,于是就考虑使用导入aar的方式来解决。1.生成aar文件步骤1 打开需要生产aar文件的project找到app下的build.gradle文件,然后将build.gra...原创 2018-08-18 19:33:40 · 2959 阅读 · 0 评论 -
解决Android studio中Plugin with id 'realm-android' not found
问题Plugin with id ‘realm-android’ not found解决方案安装 Realm 作为 Gradle plugin.第一步: 把 class path dependency 加入到 project 里面的 build.gradle 文件中。buildscript { repositories { jcenter() ...原创 2018-08-18 18:18:03 · 4662 阅读 · 2 评论 -
Android常见内存泄漏及优化总结
前言最近在整理回顾零碎知识点,今天整理下Android内存优化方案分享给大家。在Android开发中,一些不好的编程习惯会导致我们的开发的app存在内存泄露的情况。下面简单介绍一些在Android开发中常见的内存泄露场景及优化方案。1.单例导致内存泄露单例模式在Android开发中会经常用到,但是如果使用不当就会导致内存泄露。因为单例的静态特性使得它的生命周期同应用的生命周期一样长...原创 2018-08-13 22:21:54 · 1795 阅读 · 0 评论 -
实用Android studio调试技巧
今天的文章,我要记录的就是有关调试的技巧,不论你是否已经掌握,都值得一看。对了,文章的截图是我利用下班时间整理的,所以一般会很晚回去,到家都是十点半左右,因为时间还是比较仓促的,有些地方遗漏或者不正确的,欢迎指正!下面进入正题。1. 调试窗口先来一张大图,途中详细标注了调试窗口中,各个常用的功能区域和按键。如果你觉得图片看不清,可以选择在单独的标签页打开,然后放大看(实在不行,可以留下...转载 2018-08-10 10:57:46 · 469 阅读 · 0 评论 -
Android即时通讯和sns开源项目汇总
这是一个整理即时通讯(IM)和社交系统(SNS)优秀开源项目的文档,项目上传github欢迎提交更新。 一 即时通讯和社交系统平台1 环信(推荐) 2 阿里百川 云旺 3 融云 4 OpenSNS …… 二 基于环信的即时通讯开源项目数据整理自环信官网,网络数据和github。更多信息请参考环信官方网站和ImGeek1 高仿微信:基于环信SDK高仿微信介绍:转载 2018-01-29 16:45:35 · 1092 阅读 · 0 评论 -
git安装上传本地代码以及遇到的问题
GitGit是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Windows版本Git下载地址https://git-scm.com/download/win下载下来后直接点击exe文件完成安装。上传本地代码到Github上要上传代码到github上先要在github上注册用户,注册完成后记住用户名和密码, 然后在github上新建一个repo原创 2018-01-30 16:38:41 · 898 阅读 · 0 评论 -
DialogFragment自定义布局和大小踩坑记
前言最近需要做一个弹出框,里面包含两个可以左右滑动的fragment的,采用dialogFragment来实现的,在使用dialogFragment的时候遇到了一些坑,所以抽时间好好梳理一些dialogFragment的使用和注意的地方。效果图先给出实现的效果图从效果图中可以看到,弹出框中包含全部和收藏两个fragment支持滑动和点击实现fragment的切换。弹出框的大小是自定义的。...原创 2018-12-21 16:47:22 · 11244 阅读 · 5 评论 -
自己动手实现Android中的三级缓存框架
前言2018年过去了,很久之前就希望自己可以潜心研究源码,研究技术,但是空闲时间不是看电影,就是玩游戏都没有认真看技术方面的东西感觉很内疚,2019年一定要好好的研究端正态度,认真学习技术。为什么要三级缓存有时候Android应用中要获取比较大的数据,比如说图片流,短视频流等,如果每次都从网络上去请求,那么响应速度很慢的,用户体验不好。二级缓存如果把服务器拉下来的数据保存在本地数据库中,...原创 2019-01-01 23:20:38 · 1732 阅读 · 2 评论 -
android高级进阶之12条代码优化以及性能优化
从去年七月份(2018/7/13)入职到现在(2019/8/15)已经一年多了,这一年从一个菜鸟开始慢慢学习到了很多东西,记录一下在开发过程中遇到的代码优化和性能优化经验,方便让其他人少走弯路。性能优化1、装箱带来的内存消耗Boolean isShow =new Boolean(true) ; 上面的代码会带来如下问题:上面的意思总结一下就是,采用装箱在java 5及以上是没必要的...原创 2019-08-17 18:23:38 · 1170 阅读 · 2 评论 -
Android 高级进阶之overdraw分析及解决
前言最近在看Android中性能优化的,其中提到了LinearLayout会引起overdraw,但是并没有具体的分析原因,我自己查找了一些资料从LinearLayout的绘制等方面来说明为什么使用LinearLayout会引起overdraw和哪些情况下使用LinearLayout会引起overdraw。希望大家看完之后对view的绘制和测量过程更加了解。什么是overdrawAndroi...原创 2019-08-06 21:23:50 · 2130 阅读 · 0 评论 -
Android屏幕适配总结
前言好久之前就想写一篇跟屏幕适配相关的文章一直没有动笔,这次下决心抽周末的时间结合我在实际项目中所遇到的问题写一篇博客。Android中各种尺寸单位的区别Android开发中会遇到各种单位:pxPixels - corresponds to actual pixels on the screen.inInches - based on the physical size of...原创 2019-08-12 12:43:10 · 715 阅读 · 1 评论 -
Android松耦合监听前后台切换框架
应用处于后台满足什么条件要判断当前应用是否处于后台,有个很简单的标准,当应用处于后台的时候,应用中所有的activity肯定都不处于运行中状态,并且应用所有处于运行中的activity在切后台时肯定会执行onPause方法。因此通过判断应用中所有的activity都不处于运行状态就可以知道当前应用处于后台,当有一个应用或多个activity处于运行状态时应用就处于前台。下面是很经典的activi...原创 2019-03-15 17:29:01 · 860 阅读 · 0 评论 -
WorkManager完全解析
前言Workmanager原创 2019-01-20 21:06:09 · 5425 阅读 · 0 评论 -
6本通往高级Android开发者必看的英文书籍,附下载地址
前言看书是每个阶段进步必备的过程,要学习Android知识,成为高级Android程序员,需要非常系统的知识体系结构,看书能够帮我们从大的框架,理解整体结构。找了好长时间找到了非常好的几本外国Android方面的书籍,这些书既系统又生动,内容很好理解,绝对都是干货。我把这些书整理下来放到了GitHub上面。方面大家学习,共同进步提高。1、Android Programming Cookbook...原创 2019-01-09 11:32:54 · 2563 阅读 · 1 评论 -
Room Database完全解析
前言Android数据持久层直接使用SQLite很麻烦,Google官方推出了Room, Google对room的定义:The Room persistence library provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of ...原创 2019-01-18 11:46:52 · 10132 阅读 · 2 评论 -
Android自己搭建一个实用的SharedPreferences管理类
前言在项目中经常会用到SharedPreferences来存储一些配置信息,比如用户的账号信息等。但是当项目大了之后如果还在要使用时再单独创建和使用SharedPreferences就会造成SharedPreferences泛滥,不好管理,代码可维护性差。因此结合实际的项目经验给出一个通用的SharedPreferences管理类,把项目中所有使用到的SharedPreferences统一管理,...原创 2019-01-06 19:22:37 · 1755 阅读 · 0 评论 -
Android组件安全详解
2016-09-03 简析Android组件安全 Mobile android 前言前段时间在学习github上DroidPlgin插件的时候接触到不少专业术语,诸如预先占坑、Activit转载 2017-04-05 10:37:19 · 4231 阅读 · 0 评论 -
Android应用自动更新功能
一个好的应用软件都是需要好的维护,从初出版本到最后精品,这个过程需要版本不停的更新,那么如何让用户第一时间获取最新的应用安装包呢?那么就要求我们从第一个版本就要实现升级模块这一功能。自动更新功能的实现原理,就是我们事先和后台协商好一个接口,我们在应用的主Activity里,去访问这个接口,如果需要更新,后台会返回一些数据(比如,提示语;最新版本的url等)。然后我们给出提示框,用户点击开始下载,下载转载 2017-03-10 10:41:11 · 730 阅读 · 0 评论 -
10个经典的Android开源应用项目
Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用。其中也有许许多多的开发者提供了应用开 源项目,贡献出他们的智慧和创造力。学习开源代码是掌握技术的一个最佳方式。下面推荐几个应用开源项目,这些项目不仅提供了优秀的创意,也可以直接掌握 Android内核的接口使用:1、Android团队提供的示例项目如果不是从学习Android SDK中提供的那些样例原创 2017-03-01 16:45:22 · 1335 阅读 · 0 评论 -
Android Studio 快捷键总结
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动补全代码Ctrl+空格 代码提示Ctr原创 2016-10-16 10:03:51 · 654 阅读 · 0 评论 -
Android Studio如何轻松整理字符串到string.xml中
在Android studio中提供快捷键 Alt+Enter。步骤: 1. 在xml中选中需要提取的字符串,然后使用快捷键Alt+Enter。 2. 在弹出的窗口中选择Extract string resource. 3. 填写resource name。<TextView android:id="@+id/costReport" style="@sty原创 2016-10-15 22:35:02 · 4824 阅读 · 0 评论 -
Android中的Button自定义点击效果之改变点击时按钮的颜色
在Android中定义按钮的点击效果可以通过自定义selector,通过设置两张不同的背景图片来改变点击时和未点击时的状态,但有时候仅仅只想改变点击时按钮的颜色,但是在selector中并不能直接定义颜色。下面代码实现一个点击按钮时仅仅改变按钮颜色。 1. 在drawable目录下面定义:button_press.xml<shape xmlns:android="http://schemas.a原创 2016-10-25 22:14:37 · 11768 阅读 · 2 评论 -
《Android深入透析》之Android事件分发机制
《Android深入透析》之Android事件分发机制 《Android深入透析》之Android事件分发机制 一、 Android分发机制概述: Android如此受欢迎,就在于其优秀的交互性,这其中,原创 2016-10-25 22:10:17 · 577 阅读 · 0 评论 -
深入解析Android中的selector
有时候我们需要根据一个组件的不同状态来显示不同的图片,不如说一个按钮,就包含点击,聚焦,或者既不点击又不聚焦等状态,要使按钮在不同的状态下显示不同的样式或图片,这时就要用到selector,可以把组件的不同状态定义在一个xml文件中。 下面是一个实例: EditText中随着文本框的状态来动态的改变输入的文字的颜色:activity_main.xml<?xml version="1.0" en原创 2016-10-14 20:53:04 · 517 阅读 · 0 评论 -
Android中自定义圆角边框
在drawable目录下自定义一个border.xml文件,步骤如下: 选择drawable—>new—>drawable Resourse file—>更改Root element 为shape Filename 为border。<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android原创 2016-10-14 15:35:24 · 635 阅读 · 0 评论 -
Android中上传图片到服务器详解
最近做一个项目,要从相册或者手机拍照上传图片到服务器。这里写一篇关于上传图片时运到的各种问题,以及如何上传成功。 1. 将获取的图片转化为bitmap。 2. 将得到的bitmap通过base64格式转化为字符串。 3. 然后调用webservice接口,将字符串上传个服务器,一般还会获取webservice返回的uri。 但是一定要注意的一点是当上传的图片比较大时,可能会导致上传失败原创 2016-10-13 22:04:42 · 5089 阅读 · 5 评论 -
Android中的PopupWindows详解
Android中的PopupWindows详解PopupWindows是类似与dialog的弹出窗口,不过比dialog更加方便的显示view的位置。 PopupWindows的用法分为以下几步: 1. 定义MyPopupWindows继承PopupWindows. 2. 重写PopupWindows的构造方法。 3. 实现自己的showPopupWindows()方法用来控制Pop原创 2016-10-13 16:25:31 · 605 阅读 · 0 评论 -
Android自带刷新插件SwipeRefreshLayout详解
SwipeRefreshLayout是Android中自带的一款刷新用的插件,使用起来十分的方便,简单。 SwipeRefreshLayout的使用分为三步: 1. 在布局中需要使用刷新的布局外部加一个SwipeLayout。 2. 实现SwipeRefreshLayout.OnRefreshListener中的onRefresh()方法。 3. 在onRefresh()中进行逻辑处理原创 2016-10-12 22:54:57 · 2353 阅读 · 0 评论 -
Android调用webservice返回数据为空
Android调用webservice返回数据为空 最近做Android项目的时候,调用一个webservice接口返回的数据一直为空,但是在网页上测试的时候该接口返回数据是正常的。于是用log打印出来是:java.net.SocketTimeoutException异常,原因是调用webservice时设置的超时时间timeout太短了,所以当接口返回的数据太大,或者上传的数据太大时就会出现原创 2016-10-11 17:25:12 · 2583 阅读 · 0 评论 -
实现qq中按返回键返回桌面不退出程序
在实际应用中,很可能我们希望自己的app在按下返回键的时候并不退出,而是像按home键一样仅仅返回桌面,而程序仍然在后台运行着。要怎么实现这个效果呢?很简单,只需要重写一下onBackPressed方法就可以了。如下所示: public void onBackPressed() { Intent setIntent = new Intent(Intent.ACTION_MAIN);原创 2016-11-06 20:32:43 · 1655 阅读 · 0 评论 -
android:drawableLeft的用法
有时候想在EditText左边放一个图片,如图所示:就可以在xml布局文件中的EditText定义代码中,添加入下面的代码,即可实现:[html] view plain copy print?android:drawableLeft=“@drawable/login_user” android:drawableLeft="@drawable/login_user" 在TextView中有这么一原创 2016-10-16 15:21:56 · 12666 阅读 · 1 评论 -
Android关于Log的一个简单封装
Android.util.Log类,可以方便地用于在编码调试过程中打印日志。但是在发布后的产品中,如果有太多的日志打印,则会严重地影响性能。对android.util.Log类做一个简单的封装,当产品要发布的话,将Debug设为false。代码如下。[java] view plain copy print?public class LogUtil { /**正式上线時候设为false*原创 2016-10-16 15:35:53 · 485 阅读 · 0 评论 -
Android中自定义顶部状态栏颜色
public class StatusBarUtils { public static void setWindowStatusBarColor(Activity activity, int colorResId) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {原创 2017-01-05 11:26:52 · 3931 阅读 · 0 评论 -
android获得屏幕高度和宽度
1、WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay(原创 2016-12-28 09:40:15 · 322 阅读 · 0 评论 -
深入浅出Android中的MVP模式
MVP模式是在MVC模式的基础之上改进而来的。MVP模式分为:model,view,presenter三部分。三部分的关系如下图所示: 其中PresenterCompl实现IPresenter接口,PresenterCompl中的方法要改变view时通过调用IView中的方法来实现。Model层为PresenterCompl提供数据。 也就是说之前MVC中view的控制都是在activity中实原创 2016-10-28 15:19:51 · 645 阅读 · 0 评论