自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android四大组件——BroadcastReceiver(原理篇)

#前言Android四大组件——BroadcastReceiver(基础篇)里面介绍了BroadcastReceiver相关的基础知识,本文将从Android 8.0源码来分析一下广播的注册和接收原理。#BroadcastReceiver的注册Android系统中BroadcastReceiver的注册方式分为动态注册和静态注册两种。动态注册必须在程序运行期动态注册,其实际的注册动作由Con...

2018-10-31 10:49:18 799

原创 Android高级进阶之自定义View

前言在网上看到一张图,花了一天时间,自己尝试着写了一个自定义View,里面涉及到了自定义属性、自定义View padding属性的处理、画笔(Paint)和画布(Canvas)的使用、分辨率适配问题、性能问题等,觉得还是有些东西值的记录一下的,效果图如下:自定义属性基础属性定义说明: 属性类型 属性定义方式 属性值说明 color FF5...

2018-09-13 15:54:31 12289 2

原创 Java线程等待唤醒机制

前言今天看源码的时候遇到这样一个场景,某线程里面的逻辑需要等待异步处理结果返回后才能继续执行。或者说想要把一个异步的操作封装成一个同步的过程。这里就用到了线程等待唤醒机制,下面具体看一下。等待唤醒机制示例下面代码是一个简单的线程唤醒机制示例,主要就是在Activity启动的时候初始化并start线程,线程start后会进入等待状态,在onResume方法中执行notify方法唤醒线...

2018-09-11 21:27:29 576

原创 (Android 9.0)Activity启动流程源码分析

前言熟悉Activity的启动流程和运行原理是一个合格的应用开发人员所应该具备的基本素质,其重要程度就不多做描述了。同时,知识栈应该不断的更新,最新发布的Android 9.0版本相较于之前的几个版本也做了许多改动和重构,但是大体流程变化不大。本文基于Android 9.0版本源码,从Activity启动方法startActivity为切入口分析整个流程。一、发出启动请求启动一个A...

2018-09-09 20:50:50 6911 4

原创 耗时方法请一定要做线程检查

前言主线程又称UI线程,是不能做耗时任务的,否则会导致UI界面卡顿甚至ANR。 最常见的case就是如果我们在主线程做访问网络操作会抛出NetworkOnMainThreadException异常,抛出这个异常是因为Android在StrictMode中做了相应的检查,如果发现主线程有访问网络的行为就会主动终止并抛出异常。 public void onNetwork() ...

2018-09-07 10:39:17 493

原创 关于Fragment生命周期异常的分析

问题描述最近在总结Activity和Fragment相关知识的时候遇到一个问题,就是首先通过动态方法在Activity的onCreate中添加Fragment,然后旋转屏幕观察Fragment的生命周期调用,发现每个方法都会被调用两次,很诡异,仔细思考了一下马上就找出了答案。代码: getSupportFragmentManager() ...

2018-08-31 10:37:13 718

原创 Java高级特性——反射

概述定义JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。用途在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成...

2018-08-27 16:44:58 866

原创 (Android 9.0)动态权限运行机制源码分析

概述Google在 Android 6.0 开始引入了权限申请机制,将所有权限分成了正常权限和危险权限。应用的相关功能每次在使用危险权限时需要动态的申请并得到用户的授权才能使用。动态权限申请的使用主要涉及到以下几种方法: 方法 作用 checkSelfPermission(@NonNull String permission) 检查权限 requestPe...

2018-08-26 20:43:01 8228

原创 (Android 9.0)关于Cursor的内存泄露问题总结

前言Android中数据的持久化经常会使用到SqliteDatabase或是ContentProvider,查询数据的时候可以通过SqliteDatabase.query或是ContentResolver.query方法来获取一个Cursor对象,这个Cursor对象里面就包含了我们所要查找的数据。在之前的认知里Cursor在使用完毕后必须要主动调用close来关闭释放资源。最近发现项目里有很...

2018-08-23 23:07:08 1593

原创 (Android 9.0)应用使用数据统计服务——UsageStatsManager

前言Android5.0以前,使用ActivityManager的getRunningTasks()方法,可以得到应用包名和Activity;Android5.0以后,可以通过UsageStatsManager.queryUsageStats方法替代,但是也只能得到应用包名。当然你也可以通过AccessibilityService,也可以得到应用包名和Activity。正好最近用到UsageS...

2018-08-18 22:23:12 3457

原创 Messenger使用及原理详解

概述Messenger与Handler类似,可以用它来发送和处理消息,其低层的实现是对Binder的一个简单封装。使用起来也比较方便,在一个线程中通过指定一个Handler来创建Messenger,并把它传递给另一个进程,这样两个进程之间就可以通过消息(Message)来传递信息了。使用方法主要思路: 客户端通过bindService来绑定服务端,并从服务端获得IBinder接口...

2018-08-07 16:17:34 2723

原创 AIDL的简单使用和注意事项

概述AIDL(Android interface definition Language)——Android 接口定义语言, 是 Android 提供的一种进程间通信 (IPC) 机制。可以利用它定义客户端与服务端使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,...

2018-08-06 09:57:50 518

原创 定时器之Timer

概述Timer 是可以指定将来的某个时间在后台线程中调度任务的工具。每个Timer对应一个后台线程用来顺序执行这个Timer对应的所有任务(TimerTask)。正因为是单线程顺序执行的,所以每个任务必须被快速执行,不能做耗时操作,否则会阻塞后面任务的执行。示例下面是一个简单的Timer使用示例,表示延迟1s中执行,每5s钟执行一次。Timer还提供了多种schedule方法用来满...

2018-08-02 17:16:00 343

原创 系统服务之定时服务(AlarmManager)

概述AlarmManager提供了对系统定时服务的访问接口,使得开发者可以安排在未来的某个时间运行应用。当到达闹铃设定时间,系统就会广播闹铃之前注册的Intent。如果此时目标应用没有被启动,系统还会帮你自动启动目标应用。即使设备已经进入睡眠已注册的闹铃也会被保持,只有当设备关闭或是重启的时候会被清除。下面基于Android 8.0源码来一起学习一下。闹铃类型AlarmManage...

2018-07-31 20:29:49 4585 1

原创 Android 8.0中各种通知写法汇总

# 概述通知([Notification](https://developer.android.google.cn/reference/android/app/Notification.html))是应用为用户显示重要信息提示的一种工具。系统为开发者提供了不同种类的通知样式模板可以使用,开发者也可以根据自己需要自定义通知样式。之前写过类似的通知demo,时间长代码找不到了。另外,Google在An...

2018-07-12 12:13:40 4888 1

原创 Android中的菜单实现汇总

前言菜单是许多应用类型中常见的用户界面组件,实现的方法有很多,本篇中对一些常用的控件或方法进行一个汇总。三种基本菜单Google在API开发指南中关于Menu的用法推荐了三种基本菜单的实现方法:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出菜单(PopupMenu)。选项菜单(OptionsMenu)选项菜单是某个 Activity 的主...

2018-03-15 09:49:23 427

原创 Android推荐的三种基本菜单

Google在开发者网站上关于Menu的API指南中为开发者推荐了三种基本的菜单:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出菜单(PopupMenu)。下面分别给出相应的基本实现步骤。

2018-03-15 09:41:38 20814 2

原创 RecyclerView+ContextMenu实现菜单项

前言最近自己写了一个问卷调查的APP,想要实现对RecyclerView里面列表进行移动或删除的功能,常规的方法会使用PopupWindow、AlertDialog或是DialogFragment等控件来做,检索资料的时候无意间发现RecyclerView是支持ContextMenu的,所以自己尝试一下。效果如下:效果图实现步骤先来简单介绍一下实现步骤。分以下几个步骤:1、给你RecyclerVi

2018-01-18 13:37:49 3592 1

原创 SharedPreferences总结

前言:SharedPreferences很早就用过,但也只限于会用,隔了一段时间再用发现有点生疏,还是要去网上找用法,对其运行原理和不同方法间的区别也知之甚少,决定写一篇文章来总结一下,加深下印象和理解。概述:SharedPreferences是Android提供的几种常用的数据存储解决方案之一,应用可以通过它来访问和修改一些他们所关注的数据,常被用来存储少量的、格式简单的

2018-01-17 11:13:27 576

原创 二维码

前言最近自己在写一个问卷调查的App,想要实现通过二维码的方式来分享一个问卷的功能,需要用到二维码生成和识别的相关知识,搜索学习了一下,做一个总结。二维码二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。二维条码/二维码(2-dimensi

2018-01-17 11:09:42 309

原创 Retrofit + Rxjava + RxAndroid实现网络请求

之前自己实现了一个新闻类阅读APP,最近想使用当下流行的Retrofit + Rxjava + RxAndroid + MVP架构来重构一下,本文以每日一文作为数据源API做一个简单的示例,来介绍一下如何使用Retrofit + Rxjava + RxAndroid来实现网络数据请求与解析。一、配置在你项目的build.gradle文件中加入如下配置: //rxjava ...

2017-05-11 14:49:43 2129 3

原创 仿微信群聊头像(图像合成、缩放)

最近群里面有人问,微信群聊的头像是怎么实现的,就花了半个小时写了一个demo,今天又优化了一下,写个博客分享一下。先上效果图 原理 原理比较简单,就是用画布(canvas)把九张图片合成一张图,然后再按比例缩放一下。 主要就是两个方法,一个是图片合成方法mergePictures(int[] pictures, int row, int column),一个是图片缩放方法resizeImage

2017-04-07 16:05:07 33059 2

原创 系统服务之下载管理(DownloadManager)

前言: 最近一直在写一个新闻客户端练手,每天也会关注一下鸿洋的微信公众号推荐的文章,看到一篇关于系统下载服务的文章比较感兴趣,就把它实现到我的新闻客户端用来为用户提供图片新闻的下载功能,顺带着分析一下源码(Android 7.1.1),总结一下在功能实现过程中遇到的坑。概述: DownloadManager是Android提供的用来处理长时间HTTP下载任务的一个系统

2017-03-16 17:11:59 3785

原创 读取Android手机设备相关信息

最近在论坛上有人问相关问题,正好最近看了些相关的东西,项目中也用到过,写篇博客来总结下。首先说下获取到这些信息有什么用?用于区分不同设备或是运营商。在应用开发过程中经常会遇到不同的运营商或是客户的需求是不一样的,你又不能仅仅只是因为一两处功能的差异就多维护一套代码,这个代价太高。所以常用的方法就是通过各种系统配置项来做功能区分,不同的配置实现不同的逻辑,以达到多个版本兼容、降低

2016-08-17 14:39:50 921

原创 MotionEvent Android API level 21

最近遇到一个跟MotionEvent相关的问题,顺便了解一下相关知识,理解不是很深刻,看到多少写多少吧,仅供参考。public final classMotionEventextends InputEventimplements Parcelablejava.lang.Object   ↳android.view.Inpu

2015-04-30 17:48:27 691

原创 OOM问题总结

OutOfMemoryError(OOM)就是常说的内存泄露问题。为了能够使Android应用程序能够高效快速地运行,所以Android的每个应用程序都会用一个专有的Davilk虚拟机(Android L 上谷歌使用了传闻已久的ART来代替Dalvik)实例对象来运行,这个Davilk对象是由Zygote服务进程孵化出来的,这样的机制使每个应用进程都只能在属于自己的进程空间中运行。Androi

2015-03-23 15:59:57 8891 1

原创 擦除用户数据(eng版本平板)

仅限eng版本fastboot devicesfastboot erase userdatafastboot reboot清除有风险,操作需谨慎

2015-03-04 12:19:52 572

转载 odex文件介绍

在平台用mm编译apk时,会在out目录下生成.apk和.odex两个文件。odex文件是为了加快运行速度,把dex分出来做的预处理,以达到优化应用的目的。odex文件的名字是和对应应用的名字一一对应的。但是一般开发时需要mm编译出一个完整的apk,直接就可以push到手机中进行调试,不希望再额外push一次odex。想要android应用程序编译不产生odex,需要在具体应用下面的Android

2014-03-12 17:35:13 1758

原创 android的RTL支持

Android 4.2 支持原生RTL(由右到左显示)http://blog.csdn.net/ultrapro/article/details/8690145

2013-09-25 19:40:31 7160

原创 Android SystemProperties 和 ADB shell 命令查看手机状态

SystemProperties系统属性,对整个系统全局共享,通过SystemProperties.set()/SystemProperties.get()这两个函数对系统的属性进行读取和设置。可以通过ADB shell进行查看,具体方法是adb shell getprop +“具体的属性对应的名称”就可以读取你想要的属性了。如果不知道具体的属性是什么名称也可以先输入adb shell g

2013-07-19 16:10:42 15747

原创 常见View的属性

最近在搞Android手机软件开发,在学习各种View的使用,把过程中看到的各种View的属性链接跟大家分享一下  方便大家学习TextView属性http://www.cnblogs.com/hxxy2003/archive/2011/08/05/2129050.htmlImageView属性http://407827531.iteye.com/blog/1117199E

2013-05-17 14:46:05 748

原创 eclipse常用快捷键

最近在使用eclipse进行Android手机软件开发   了解常用的一些快捷键有利于我们更好、更快的完成相关软件的代码编写      目前常用的有Ctrl+1、Ctrl+D删除一行、Ctrl+Q最后修改位置、Ctrl+W关闭当前页、Ctrl+Alt+O 导入、Alt+/ 内容辅助和一些之前windows的一些常用功能的快捷键 eclipse 也是支持的 (如复制Ctrl+V等)Ctrl+

2013-05-06 11:22:33 460

转载 MANET网络中对路由协议的攻击

在MANET网络安全问题中,对路由协议的攻击可分为被动攻击和主动攻击两类。被动攻击被动攻击是指攻击者并不去干扰正常的路由协议,而仅仅是窃听路由数据。由于MANET网络使用的是无限信道,所以这种攻击比较隐蔽,一般无法检测到。攻击者通过分析窃听到的路由数据就可能得到有用信息。主动攻击主动攻击就是网络攻击者通过向网络发送数据包来达到攻击的目的。MANET网络可能发生一下主动攻击:(1

2012-04-18 10:37:31 700

转载 Python清屏命令:)

在命令行窗口下有效:>>> import os>>> i = os.system('cls')在shell下没找到清屏方法,知道的朋友欢迎留言:)转自:http://home.cnblogs.com/group/topic/49651.html

2011-12-30 16:10:47 3651

转载 快速排序算法所有版本的c/c++实现

<br /><br />          十二、快速排序算法所有版本的c/c++实现<br /><br />作者:July、二零一一年三月二十日。<br />出处:http://blog.csdn.net/v_JULY_v。<br />--------------------------------------------------<br /> <br />前言:<br />    相信,经过本人之前写的前俩篇关于快速排序算法的文章:第一篇、一、快速排序算法,及第二篇、一之续、快速排序算法的深入分析,各

2011-03-22 15:44:00 3236

转载 十大开发代码原则

<br />  本原则是本人结合项目的实施开发编写代码情况,对多年以来带领项目实施奋战在开发一线经验的提炼与概括。这十条开发指导原则,最基本的思想是“高效,高质量的写出满足业务功能目标的代码。”每人可以结合当前项目的实际情况应用,可以补充,修订删改进一步总结提炼。<br />1.先开发简单明确的功能模块,后开发复杂的功能模块。<br />2.先做简单的子功能,再做稍微复杂的子功能,后开发有难度逻辑复杂的子功能。<br />3.以满足业务功能要求为主要目标,不保留无用的垃圾代码。写出高质量满足功能要求的代码,

2011-03-22 15:39:00 427

转载 Smooth 函数 平滑处理函数 OpenCV

<br />OpenCV Smooth 函数<br />各种方法的图像平滑void cvSmooth( const CvArr* src, CvArr* dst, int smoothtype=CV_GAUSSIAN, int param1=3, int param2=0, double param3=0 );src输入图像.dst输出图像.smoothtype平滑方法:CV_BLUR_NO_SCALE (简单不带尺度变换的模糊) - 对每个象素领域 param1×param2 求和。如果邻域大小是变化

2011-02-22 19:09:00 5768

转载 VC6下安装与配置OpenCV1.0 超实用傻瓜版

<br /> <br />从http://www.opencv.org.cn 下载OpenCV安装程序。假如要将OpenCV安装到C:/Program Files/OpenCV。在安装时选择"将/OpenCV/bin加入系统变量"(Add/OpenCV/bin to the systerm PATH)。<br /> 配置Windows环境变量<br />检查C:/Program Files/OpenCV/bin是否已经被加入到环境变量PATH,如果没有,请加入。加入后需要注销当前Windows用户(或重启)

2011-02-18 22:04:00 1245

转载 jpeg标记表

<br />文件结构<br />JFIF文件格式直接使用JPEG标准为应用程序定义的许多标记,因此JFIF格式成了事实上JPEG文件交换格式标准。JPEG的每个标记都是由2个字节组成,其前一个字节是固定值0xFF。每个标记之前还可以添加数目不限的0xFF填充字节(fill byte)。下面是其中的8个标记:SOI  0xD8            图像开始APP0 0xE0            JFIF应用数据块APPn 0xE1 - 0xEF    其他的应用数据块(n, 1~15)DQT  0xDB 

2010-10-22 16:58:00 2153

转载 JPEG文件格式 存储格式 图片文件储存格式 JPEG文件详解

<br /><br />摘要:<br />这篇文章大体上介绍了 JPEG 文件的结构信息以及它的压缩算法和编码方式。使读者能够对 JPEG 文件格式有大体上的了解。为读者进一步进行学习 JPEG 文件压缩做好准备<br /> <br />关键字: 十六进制,段格式,编码<br /> <br />一、    JPEG文件格式概述:<br />图像和动画的存储方式是一个很重要的问题。幸好我们有了数据压缩,有了 JPEG 等多种压缩存储图像的文件格式,我们今天才能够拿着小小的一个存储器,却存上许多张色彩鲜艳的图片

2010-10-18 21:53:00 2462

Android 8.0 各种通知写法

Android 8.0中各种通知写法汇总 https://blog.csdn.net/lj19851227/article/details/81013605

2018-07-17

程序员面试宝典

经典程序员求职宝典 行业优秀畅销书籍

2012-04-24

空空如也

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

TA关注的人

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