自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (13)
  • 收藏
  • 关注

原创 面试记录

一 , 面试的情商1,请先简单自己介绍一下。2,最近做过的应用有哪些。3,你负责哪个模块的开发。4,你觉得哪个模块是比较难。5,有没有用到些什么设计模式或者比较新鲜的东西。6,你上家离职原因。7,你期望薪资多少。8,对于本次面试你有何感想。9,还有别的想要了解一下吗。二,java笔试1,父类的静态方法能否被子类重写。2,范型在编译期有效。3,创建...

2019-03-12 22:37:24 411

原创 递归总结

递归需要满足三个条件:1、一个问题可以分解为几个子问题的解。2、这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一致。3、存在递归终止条件。如何编写递归代码?写出递归公式,找到终止条件。 总结:写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推敲终止条件,最后将递推公式和终止条件翻译成代码。 递归代码要警惕堆栈...

2018-10-14 21:41:15 425

原创 android数据库更新简介

概述Android应用程序组件Content Provider中的数据更新通知机制和Android系统中的广播通知机制的有点类似。它们有三个主要区别,区别一是前者是通过URI来把通知的发送者和接收者关联在一起的,而后者是通过intent来关联的;二是前者的通知注册中心是由ContentService服务来扮演,而后者是由ActivityManagerService服

2016-12-08 10:42:55 630

原创 android系统联系人查询流程

概述在Android应用框架中一般都会划分为三层:数据层、数据访问层和业务层。数据层基本都是用sqlite来存储数据,数据访问层是借用四大组件中的内容提供器来实现,业务层就是各个应用,比如电话本。三层结构如下图所示:这里将详细总结下电话本对数据库的查询流程。创建数据库当系统启动,所有服务都准备好之后,ContactsUpgrade

2016-12-06 17:00:08 723

转载 Android如何关闭硬件加速

原文地址:http://developer.android.com/guide/topics/graphics/hardware-accel.html译文地址:http://blog.chenming.info/blog/2012/09/18/android-hardware-accel/硬件加速Android 3.0 (API level 11), 开始支持所有的View

2016-11-24 14:06:23 18760 1

原创 fitSystemWindows属性

官方描述:        Boolean internal attribute to adjust view layout based on system windows such as the status bar. If true, adjusts the padding of this view to leave space for the system windows. Wil

2016-11-18 14:51:13 2138

转载 ScrollView的android:fillViewport="true"

http://stackoverflow.com/questions/2599837/linearlayout-not-expanding-inside-a-scrollviewhttp://blog.csdn.net/linqingf/article/details/6573602当fillViewport="true" 设置为 true里 , s

2016-11-18 14:06:00 635

转载 android studio 快捷键记录

功能快捷键 功能快捷键格式化代码command + alt + L 运行程序到设备Ctrl + R导包、修正alt + enter 运行Debug到设备Ctrl + D复制行command + D 全

2016-11-15 13:58:24 323

原创 Android实现点击AlertDialog上按钮时不关闭对话框的方法

最近在做项目上做一些需求,途中遇到一个AlertDialog点击按钮问题,默认点击OK/cancel都会关闭对话框。但需求上要求在点击OK的时候做一些处理,根据处理结果来结束对话框。但是只要设置setPositiveButton("ok",this)了回调,点击ok就会关闭对话框。于是抱着好奇心去跟踪下源码: public Builder setPositiveButton(Ch

2016-11-08 19:54:58 792

转载 Android 7.0 FileProvider的使用

我们使用手机的时候经常会看到应用程序提示升级,大部分应用内部都需要实现升级提醒和应用程序文件(APK文件)下载。一般写法都差不多,比如在启动app的时候,通过api接口获得服务器最新的版本号,然后和本地的版本号比较,来判断是否需要弹出提示框下载,当然也可以通过推送的自定义消息来实现。我们这里主要讨论的是应用程序下载,并在通知栏提醒下载完成。实现过程大致分为三步:创建一个serv

2016-10-26 15:04:04 19028 2

原创 android 6.0运行时权限

记得在android6.0以前,应用需要权限只要在androidManifest.xml配置就可以了。为了安全的考虑,android 6.0开始使用动态申请权限,除了在androidManifest.xml配置以外,还需要在代码里面控制权限申请,虽然权限的申请变复杂了,但是对于用户来说更安全了。但也并不是所有的权限都要动态申请。需要申请的权限如下所示:Permissio

2016-10-25 15:55:47 395

原创 基于N源码的AccountManagerService简单认识和账户添加流程分析

AccountManagerService负责管理手机中用户的在线账户,主要的工作涉及账户的添加、删除和AuthToken的获取和更新。下面看下AccountManagerService的初始化,进入SystemServer中的startOtherServices方法看到如下代码:mSystemServiceManager.startService(ACCOUNT_SERVICE_CLAS

2016-10-13 20:13:14 3537

原创 基于N源码的ContentService数据通知机制

ContentService是Android平台中数据更新通知的执行者。首先看下ContentService的创建:进入系统服务SystemServer中的startOtherServices方法,有如下这边代码:mSystemServiceManager.startService(CONTENT_SERVICE_CLASS);其中CONTENT_SERVICE_CLASS是:

2016-10-13 09:56:55 945

原创 Java和Android反射使用记录

平时看源码经常会遇到反射的代码,这里记录下反射的用法,方便查阅。首先在java中测试,创建父类Persion:package com.invok;public abstract class Person { String name = ""; private int age = 0; public int fPubVar = 0; abstract void getPhon

2016-10-10 23:07:38 489

原创 JAVA动态代理学习

代理模式分为静态代理和动态代理,静态代理中的代理是由程序员自己编写的,也就是说在我们的代码运行前,代理类的class编译文件就已存在;而动态代理与其相反,代理类是在运行阶段由JVM帮忙生成。java也给我们提供了一个便捷的动态代理接口InvocationHandler,实现该接口需要重写其invoke方法,如下:public class DynamicProxy implement

2016-09-30 11:25:58 325

原创 基于N源码的ContentProvider调用流程分析

内容提供者顾名思义是用来提供数据的,现在假设我要获取系统联系人的数据,可以这样查询:getContentResolver().query(Contacts.CONTENT_URI, null, null, null, null);这样就会跳转到联系人的provider的query:public class ContactsProvider2 extends AbstractContac

2016-09-29 15:11:42 983

原创 基于N源码的广播注册和发送流程分析

广播可分为普通广播、有序广播和粘性广播,广播的注册方式分为静态注册和动态注册。在N上删除了三项隐式广播,以帮助优化内存使用和电量消耗。这三者广播为:CONNECTIVITY_ACTION;ACTION_NEW_PICTURE;ACTION_NEW_VIDEO。意思就是在AndroidManifest文件中静态注册是无法接受到通知,必须动态注册才可以。下面看到动态注册的流程:同样进入Cont

2016-09-28 11:15:50 1122

原创 基于N源码Service启动分析

前面分析了应用内部Activity的启动过程,其实如果是应用第一个Activity的启动,流程上还会多一些创建进程和ActivityThread的过程。Service同样也是如此,如果是应用内部启动服务,且没有配置android:process的话,默认就在应用进程中启动,下面我们就配置android:process=“:remote”,让服务在另一个进程中启动。 private void s

2016-09-26 16:32:22 780

原创 基于N源码的Activity的启动过程分析

对于该主题的文章,网上泛滥,为了加深印象,最好还是自己跟一遍源码,这样对框架的认识以及对应用的控制都是很有帮助的。推荐老罗的一些列文章:Android应用程序的Activity启动过程简要介绍和学习计划老罗的博客写的非常好,但分析的源码有点老,不过大体思路是不会变的。我这里就基于android 7.0的源码来跟下这个流程,希望能帮到大家。

2016-09-22 13:47:52 2728 2

原创 Activity过度动画应用

这里介绍一下Activity之间共享元素过渡动画的使用,首先看两张效果图: 可以看到非常的酷炫。关于Activity的过渡动画不了解的同学可以先了解一下这篇文章:Android 5.0学习之Activity过渡动画

2016-09-21 11:32:11 2010

原创 AIDL简单使用

AIDL是Android Interface Definition Language, 顾名思义,它主要就是用来定义接口的一种语言。Android提供AIDL主要用来进程间通讯。从AIDL的功能来看,它主要的应用场景就是IPC。虽然同一个进程中的client-service也能够通过AIDL定义接口来进行通信,但这并没有发挥AIDL的主要功能。 概括来说:如果不需要IPC,那就直接实现

2016-09-19 11:29:52 992

原创 RXBUS的简单使用

RxBus是用来进行组件之间通讯的。因为项目当中用到了RxJava,因此用RxBus来实现组件之间的通讯,相对来说比较方便。关于RxBus的介绍和其他组件通讯工具EventBus可参考下面链接:用RxJava实现事件总线EventBus实战在没有这些工具之前,我们是怎么实现组件之间的通讯呢?我想到了三点:1、用intent来传递数据2、用注入依赖回调(意思就是注册监听回调)

2016-09-12 11:11:23 7266

原创 Android电话本数据查询总结

该文总结下工作当中维护的联系人模块中的数据查询流程。该流程在很多系统APP上都类似,了解这个过程还是很有必要的。在Android应用框架中一般都会划分为三层:数据层、数据访问层和业务层。数据层基本都是用sqlite来存储数据,数据访问层是借用四大组件中的内容提供器来实现,业务层就是各个应用,比如电话本。三层结构如下图所示:这里将详细总结下电话本对数据库的查询流程。1、创建数据库

2016-09-09 08:53:02 1758 3

原创 搭建MVP模板框架

本文将记录自己项目中用到的MVP框架模板,方便同学参考。对于MVP框架不熟的同学,建议看下我的上一篇转载的文章。或者查看原文:选择恐惧症的福音!教你认清MVC,MVP和MVVM下面看下我项目中的流程图:这样看可能并不是很清晰,再看下UML图:下面教大家一步一步来实现这个模板:1、

2016-09-06 18:55:10 428

原创 RXjava解决数据管理问题

针对我的项目借机系统中,数据管理问题给出解决方案。为了UI显示数据的流畅性,数据管理也必须采取异步方案。android原生提供了一些异步类AysncTask等,也可以采用Thread+Handler的方案。但我目前遇到的问题是这样的,比如添加手机功能,我需要先上传到网络服务器,成功后再添加到本地数据库。还有获取数据也是,我需要先从网络服务器获取数据,如果未联网,我需要从本地数据库来获取数据

2016-06-15 17:19:33 535

原创 借机系统项目记录

做这个项目的缘由是科室内部经常不断的借手机,借着借着手机不知道跑哪去了,很是头疼。后来科长让一个人来统一管理手机。借的人必须登记,这样手机在谁那一目了然。随着项目越来越多,手机也越来越多。管理手机的人每天都要应付借手机和还手机的人,使得自己没法安心工作。我看在眼里也觉得好烦,最近闲了下来,我就打算做一款APP来管理这堆手机,希望能使管理员能轻松点,而且每个人都可以安装APP来查看当前所有手机的

2016-06-02 23:02:02 335

原创 Asynctask获取网络数据使用

主界面代码如下,仅仅为了记录Asynctask的使用。业务代码写在Activity里面肯定不好的。最好使用MVP模式来实现。publicclass MainActivity extendsActivity {    privatestatic String url = "http://www.imooc.com/api/teacher?type=

2016-05-30 21:19:46 677

原创 消息机制

每个android应用在被启动时都会创建一个线程,这个线程成为主线程或者UI线程。android应用的所有操作默认都会运行在这个线程中。但是为了保证UI的流畅性,通常都会将耗时的操作放在子线程中。android3.0后,禁止在主线程中执行网络请求,否则会抛出异常,可见UI线程中执行耗时操作是非常不推荐的行为。我们知道android应用启动时,会默认有一个主线程,在这个线程中会关联一个消息队列,

2016-05-29 22:22:06 318

原创 android中的动画

在android中动画的分类较多,有最早的桢动画、补间动画,从android3.0之后添加了属性动画,而在android5.0中又增加了VectorDrawable,使得android的动画多种多样,能够满足用户的各种需求。动画实际上就是在指定的时间段内持续的修改某个属性的值,使得该值在指定取值范围之内平滑的过度。帧动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,它的原理就是在

2016-05-29 08:56:40 485

原创 scroller的使用

Scroller是一个帮助view滚动的辅助类,在使用它之前,用户需要通过startScroll来设置滚动的参数,即起始点坐标和xy轴上要滚动的举例。Scroller它封装了滚动时间、要滚动的目标x轴和y轴,以及在每个时间内veiw应该滚动到的xy轴的坐标点,这样用户就可以在有效的滚动周期内通过Scroller的getCurx和getCury来获取当前时刻view应该滚动的位置,然后通过调用vie

2016-05-28 16:15:59 466

原创 自定义view

自定义view是开发人员必须掌握的最重要技能之一。对于继承自view类的自定义控件来说,核心的步骤分别为尺寸测量和绘制,对应的函数是onMeasure、onDraw。过程如下:继承自view创建自定义控件;如有需要自定义view属性,也就是在values/attrs.xml中定义属性集;在xml中引入命名控件,设置属性;在代码中读取xml中的属性,初始化视图;测量视图大小;绘制视图内容;在视图树渲

2016-05-26 22:59:18 259

原创 重要的View

用户界面都是有Acitivity组件,Activity中关联了一个PhoneWindow创建,在这个窗口下则管理了一个视图树。这个试图树的顶级试图就是一个Viewgroup类型的DecorView,DecorView下就是各个视图控件。listview加载时会根据数据的个数来创建Item view,根据索引从数据集合中获取数据,调用getView获取具体的试图,并且与数据绑定。但是并不是有多少

2016-05-25 21:59:12 382

原创 Broadcast和ContentProvider

广播机制是一个典型的发布-订阅模式,也就是我们所说的观察者模式。广播机制的最大的特点就是接收双方的完全耦合。广播机制包含三个基本要素,分别是用于发送广播的Broadcast、接收广播的BroadcastReceiver以及用于传递信息的 Intent。广播可分为普通广播、有序广播、本地广播和Sticky广播。有序广播通过sendOrderedBroadcast()来发送,所有的广播接收器按照优

2016-05-24 21:04:15 776

原创 Service和AIDL

Service是android中实现程序后台运行的解决方案,它非常适合用于去执行那些不需要和用户交互而且还要长期运行的任务。Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,他同样执行在UI线程中,因此不要在Service中执行耗时的操作,除非你在Service中创建了子线程来完成耗时操作。当某个应用程序进程被杀死时,所有依赖于该进程的Service也会停止运行。服务启动了

2016-05-23 23:08:23 460

原创 Activity生命周期和启动模式

Activity的生命周期分为两个部分,一部分是典型情况下的生命周期,另一部分是异常情况下的生命周期。onCreate()他会在Activity第一次被创建时调用,通常完成Activity的初始化操作,如设置布局、初始化试图、绑定事件等。onStart()此时的Activity还处在不可见状态、它的下一个状态就是Activity变得可见的时候,也就是这个函数在Activity可见之前被调用

2016-05-23 21:28:04 458

原创 寻找android中的设计模式(三)

寻找android中的设计模式(三)寻找工厂模式工厂模式的家族分四种:静态工厂模式、简单工厂模式、工厂方法模式、抽象工厂模式。下面以开冒菜店为例,假设我定义了一家冒菜店: public class MaoCaiStore { public MaoCai sellMaoCai(String type) { MaoCai m

2016-04-13 15:08:46 496

原创 寻找android中的设计模式(二)

寻找android中的设计模式(二)概述前面学习了单例模式和观察者模式,其中观察者模式可以很好的降低对象直接的耦合。后面的模式会接触到更多的设计原则。寻找策略模式定义:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。学完之后,我也思考着生活当中哪些地方可以使用到。就以游戏为例吧,需求描述是:有很

2016-04-12 15:39:06 346

原创 寻找android中的设计模式(一)

概述维护android系统中的联系人模块有一段时间了,最近开始学习java设计模式,对书(HEAD_FIRST设计模式)中精彩设计非常崇拜和对OO原则有了更深刻的理解。作为对设计模式的初学者,我将记录对它的追求之路。该系列文章将结合联系人应用,寻找google原生代码中设计模式。寻找单例模式定义:确保一个类只有一个实例,并提供一个全局访问点。

2016-04-11 12:52:12 1609 1

大数据分析节假日出行路径

利用节假日用户数据以及百度API来分析用户出行状况。通过百度路径规划API,可清晰看出用户出行密级程度。

2018-05-06

Nodejs开发指南

2017-02-19

仿知乎应用

本项目包含以下知识点: MVP架构思想 Retrofit RESTful API 框架的配合 RxJava 响应式编程 Butter Knife:通过注解绑定 View 夜间模式切换

2016-09-21

图片制作工具

写个博客没有动态图是不是很苦恼,这款工具可以很轻松的帮到你,支持录制区域选择,录制帧速率调节、录制品质格式选择。

2016-09-20

手机管理系统APP

这是一款管理类的APP,可以方便管理您的资源,对您的资源进行增删改查。 包含技术; 1、GreenDao数据库框架 2、Rxjava异步框架 3、Glide图片框架 4、MVP框架 5、BOMB云服务

2016-09-19

Retrofit+Rxjava+MVP组合屌丝APP

这款APP包含各种类型新闻,各种美女图片,图文笑话和搞笑视频。包含技术有Retrofit,Rxjava,Glide,MVP组合屌丝APP。

2016-09-19

Android技术案例

该技术案例包括UI控件、自定义控件、常见异步机制、数据库操作、资源管理、CSDN经典demo等。是开发应用非常常用的技术点。可以参考。

2016-04-11

Android日记

该资源总结了Android应用开发的相关知识点,记录对《疯狂Android讲义》的学习成果,非常适合作为初/中级开发者的案例学习。

2016-04-11

android旅游宝

这是一份旅游相关的app源码,可以自己定制旅游计划和参与朋友圈其他人的旅游计划。类似结伴旅游。

2016-04-11

Android亲情电话

这是一款长辈们喜欢使用的电话应用,每个页面只有一个亲人,可以设置姓名、号码和图片。非常适合年长一辈的人使用,相信老人们会爱上这款应用。该应用也已经发布到网上,受到广大用户的赞美。这里提供了源码供参考。

2016-04-10

Activity和Fragment应用

该应用总结activity和fragment的使用,在demo里面有帮忙文档,可方便查找activity和fragment的用法。非常适合作为初/中级开发者的参考代码。

2016-04-10

AndroidMetral联系人

自己开发的一款Metral风格的联系人应用,包含联系人数据列表和拨号盘。同时自己设计的联系人编辑界面非常简洁明了。该应用给你一种眼前一亮的感觉。

2016-04-10

儿童腕表通讯录

该应用针对儿童腕表开发的一款软件,同样也适用于Android手机。界面清晰美观。非常容易操作。是非常实用而适合大众的应用,方便管理自己的联系人数据。支持新建、编辑、排序、群组等功能。

2016-04-09

空空如也

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

TA关注的人

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