android
文章平均质量分 74
bobo89455100
小白的成长之路已经被盗。好吧!所有博客转移到此处!真心累...
展开
-
自定义view—Canvas实现手写板和涂鸦功能
学习导航第一节:http://blog.csdn.net/bobo89455100/article/details/53729613 自定义View—自定义属性及引用第二节:http://blog.csdn.net/bobo89455100/article/details/53729621 自定义view—绘图基础Canvas+Paint第三节:http://blog.csdn.net/bobo89原创 2016-12-18 20:40:28 · 3418 阅读 · 1 评论 -
设计模式——单例模式
单例模式单利模式是应用最广泛的模式之一,也是初级工程师唯一会使用的一种设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象。那些场景会用到单例模式例1:我们最常用的就是创建一个BaseActicity,而其他所有类都是集成此类。返回的类都是BaseActicity中的一个对象。例2:我们的线程池或者访问IO时都需要考虑使用单例模式单例模式原创 2017-04-20 01:20:50 · 339 阅读 · 0 评论 -
Android Volley框架的使用(四)图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
http://www.cnblogs.com/zyw-205520/p/4997863.html http://blog.csdn.net/boyupeng/article/details/47127605转载 2017-04-20 12:31:23 · 406 阅读 · 0 评论 -
面试题记录第一节——(activity、fragment)
activity一、问:什么是activity呢?答:安卓是与用户交互的结果,他提供了一个界面让用户点击、各种滑动等操作。这个界面的存在就是activityd存在的意义。二、问:activity的四中状态?答:running - paused - stopped - killed==处于栈顶,正在运行 - 暂停(失去了用户操作的能力,并不一定不可见) - 停止(界面不可见) - 删除状态(activ原创 2017-09-18 12:45:34 · 673 阅读 · 0 评论 -
面试题记录第二节——(service、Broadcast)
一、问service是什么?答:service(服务)是一个一种可以在后台,执行长时间运行操作,而没有用户界面的组件。注意:service和braodcastReceiver都是运行在主线程。所以不建议执行耗时操作二、Service在程序中运行,有那两种方式?答:startService():、bindService():startService() 此种开启方式Service会经历onCre原创 2017-09-18 16:24:32 · 765 阅读 · 0 评论 -
面试题记录第二节——(Binder)
一、问:什么是binder?答:a、通常意义上,Binder指的是一种跨进程的通信机制。当然可也以跨线程,由于进程大于线程。所以用Binder来做线程通讯,是大材小用。b、对于Server进程来说,Binder指的是Binder本地对象/对于Client来说,Binder指的是Binder代理对象。c、对于传输过程而言,Binder是可以跨进程传递的对象。二、问:Linux内核的基础知识?binde原创 2017-09-18 18:18:00 · 643 阅读 · 0 评论 -
面试体记录第四节——(handler)
一、问:什么是handler?答: 1、可以让对应的Message和Runnable在未来的某个节点上进行相应处理(简单的来说,就是在子线程做完耗时操作,可以通过发送runnable和sendmessage方式通知主线程更新UI)。 2、让自己想要处理的耗时操作放在子线程,然后通过handler发送消息的机制,通知主线程更新UI。二、问:handler的使用方法?答:1、post(r原创 2017-09-19 09:56:48 · 497 阅读 · 0 评论 -
面试题记录第五节——Asynctask
一、问:Asynctask是什么?答:它是Android提供的一个抽象类,他本质上就是一个封装了线程池和handler的异步框架,主要是来执行异步任务的,由于它内部继承了handler,所以他可以在工作线程和UI线程中随意切换。注意:Asynctask能够让你避免使用线程类thread和handler直接处理后台操作,他可以把运算好的结果交给UI 线程来显示,不过Asynctask只能做一些耗时较短原创 2017-09-20 12:40:39 · 454 阅读 · 0 评论 -
面试体记录第六节——(handlerThread、intentservice、view)
一、问:handerThread出现的背景是什么?答:我们在安卓项目开发中,经常会遇到一些耗时操作,这时候我们第一直觉,就是开启一个子线程去执行一个耗时操作,这很方便但是却又很耗内存,因为当你一个Android中的thread执行完耗时操作,线程就会被自动销毁,如果在短时间内又要执行一个耗时操作,这个时候我们就不得不重新创建线程去执行耗时任务,这样就存在一个性能问题,多次创建和销毁线程是很消耗原创 2017-09-20 18:14:04 · 634 阅读 · 0 评论 -
ANR完全解析
1.什么是ANR在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择让程序继续运行,但是,他们在使用你的应用程序时,并不希望每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样,系统不会显示ANR给用户。2.ANR产生的原因ANR产生的根本转载 2017-03-31 22:44:36 · 377 阅读 · 0 评论 -
Android性能优化之如何避免Overdraw
什么是Overdraw?Overdraw就是过度绘制,是指在一帧的时间内(16.67ms)像素被绘制了多次,理论上一个像素每次只绘制一次是最优的,但是由于重叠的布局导致一些像素会被多次绘制,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,当这个操作耗时超过16.67ms时,就会出现掉帧现象,也就是我们所说的卡顿,所以对重叠不可见元素的重复绘制会产生额外的开销,需要尽量减少Overdra转载 2017-03-31 22:28:58 · 292 阅读 · 0 评论 -
MVC的起源和理解
MVC的起源和历史我们很多人都会在网址上看到各种mvc或者mvp相关文章,有的写的很详细、有的写的则很绕口,这里我自己也分享一份自己的心得!一、MVC起源 MVC:全称:Model - View - Controller,它是于1970年的时候有TrygveReenskaug在Smalltalk-80系统上首次提出。起初并不是MVC,而是MVCE,也就是Model - View - Contro原创 2017-03-12 18:41:53 · 4911 阅读 · 0 评论 -
自定义view—绘图基础Canvas+Paint
学习导航本章讲解: 自定义视图,我们需要做哪些准备!对于一些中级的开发者来说就要接触到自定义视图,由于Android自带的视图无法满足自己需求,又或者美观度不够自己的要求,我们就要自来亲自设计自己的视图。那么如何来实现自定义视图呢?—下面我们先简单的来认识下如何实现自定义视图!第一步、自定义视图首先需要什么?我们都要做那些简单的准备?1、我们需要创建一个类,来继承View2、我们需要自己去实现自定义原创 2016-12-18 20:38:52 · 648 阅读 · 0 评论 -
自定义View—自定义属性及引用
学习导航本章讲解: 自定义视图,我们需要做哪些准备!对于一些中级的开发者来说就要接触到自定义视图,由于Android自带的视图无法满足自己需求,又或者美观度不够自己的要求,我们就要自来亲自设计自己的视图。那么如何来实现自定义视图呢?—下面我们先简单的来认识下如何实现自定义视图!第一步、自定义视图首先需要什么?我们都要做那些简单的准备?1、我们需要创建一个类,来继承View2、我们需要自己去实现自定义原创 2016-12-18 20:38:03 · 1112 阅读 · 0 评论 -
listview 带轮播的上拉刷新下拉刷新
已经上班了,工作还真不好找。今天上传一篇关系,包含轮播图和其他组件的上拉刷新下拉刷新列表,也是自己之前写的一个dome。老忘记自己存储的地方,所以就索性写成博客,什么时候用什么时候来拿。 1、先看看,效果图 2、那这里面都怎么实现的呢?好吧,咱们一步步来简单看下。先看看代码的结构,都用到了那些代码 3、上啦下拉是怎么和listview关联的,及xml怎么去原创 2016-12-17 15:47:30 · 464 阅读 · 0 评论 -
Android 调用摄像头拍照
前几天一直在想写一个简单干净的关于Android 拍照和相册选择的dome,直到今天才有时间去写,下面是图片介绍,资源代码会有上传!供初学者学习指教(代码是Android studio)1、控件02.监听里面的方法03,onActivityResult()获得返回的数据04,图片相册获取进行uri处理05,原创 2016-12-17 16:02:20 · 721 阅读 · 0 评论 -
GridView基础学习01
GridView基础学习01原创 2016-12-17 16:17:55 · 222 阅读 · 0 评论 -
ExpandableList默认显示三条数据,点击更多显示全部(带上拉下拉)
因为项目需求,所以要做此功能,我的好朋友肖凯直接扔给我一个demo,代码很简单,初学者也可以看懂,demo下载改成自己需要的界面即可一、首先展示一下预览图二、首先展示一下项目结构(开发工具Android studio)三、部分代码(详细请下载demo,本人所有上传资源全部0分)mainActivitypackage com.szabh.boge;import android.app.Activi原创 2017-02-06 14:37:45 · 2624 阅读 · 1 评论 -
软件盘如何单独顶起Editview组件
一、运行效果二、直接上代码1、最重要的就是此工具类,复制即可import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.ScrollView;/** * Created by XianBo.Geng on 2017/3原创 2017-03-02 11:20:43 · 337 阅读 · 0 评论 -
SharePreference保存list
一、工具类,直接复制到你代码中import android.content.Context;import android.content.SharedPreferences;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import java.util.ArrayList;import java.ut原创 2017-02-04 11:26:43 · 5233 阅读 · 1 评论 -
面试题记录第七节——(事件分发)
一、问:为什么会有事件分发机制答:我们知道Android中的view,是以树形结构存在的。他的view控件有可能会重叠在一起,当我们点击的地方存在多个view的时候,就会导致我们的点击事件,多个view都得到响应,这个时候系统会把这个点击事件判断给谁呢?为了解决这个问题,就有了事件分发机制。如下图,当我们点击view1的时候,它下面的viewGroupA和黑色的rootview,都会得到相应。为了原创 2017-09-22 11:09:50 · 633 阅读 · 1 评论 -
面试体记录第九节——(Android studio目录结构认识)
一、问Android studio目录结构答:最外层的priject目录结构1、gradle:这里包含了一些gradle编译的一些脚本,gradle是谷歌推荐的一种编译脚本,它的底层是*2、.idea:这里包含了我们Android studio工具所需要的文件,例如版权的声明啊、词典的介绍、库的使用、配置文件等。3、app:这是我们的mudlu文件,我们编写的代码和布局等文件都会存放在此文件包中,4原创 2017-09-22 16:33:21 · 435 阅读 · 0 评论 -
面试记录第十八节——(冷启动)
一、什么是冷启动在安卓中,系统为每一个应用至少分配一个进程,所以从进程的角度来说,冷启动就是在应用启动之前,系统中没有该应用的任何进程信息。例如第一次启动或者被杀死后再次启动二、冷启动、热启动的区别答:第一点:定义不同。 冷启动的时候,应用启动的时候,后台没有该应用的进程,这个时候系统会创建一个新的进程,分配给该应用。 热启动的时候,启动应用的时候,后台已经有了该应用的进程,你是通过b原创 2017-10-12 17:51:52 · 397 阅读 · 0 评论 -
面试记录第十九节——(MVC)
一、MVC定义答:M:业务逻辑处理V:处理数据显示的部分C:控制器,Activity处理用户交互的问题二、什么是mvc定义答:在Android开发过程中,比较流行的开发框架,曾经采用的是MVC模式,好处就是便于UI界面的显示和业务逻辑的分离。具体来说 Model层:用来业务逻辑处理,例如一些数据库的操作、网络操作或者一些复杂的操作甚至一些耗时的任务都会在Model层处理。 View层:原创 2017-10-13 12:25:54 · 347 阅读 · 0 评论 -
面试记录第二十节——(MVP讲解)
一、前言注意:MVC功能很强大,但是他也有很多不好的缺点,因为在Android中,相比传统的MVC设计模式,它的view层它对应的是我们Android中的布局XML,但是这个xml文件并不想java web端那么强大,能做的事情其实非常有限,而controller对应的activity类不仅要处理业务逻辑,他也要处理Android当中一些操作UI的功能,我们在实际开发项目中,有很多的UI操作的业务逻原创 2017-10-13 15:56:29 · 846 阅读 · 0 评论 -
面试记录第二十一节——(进程保活)
一 、问:什么是进程保活?答:进程保活就是进程永远存在内存中,是杀不死的,就算杀死了也会有办法重新启动起来,其实这些并不是流氓手段,很多情况下,如果你想给你的用户提供服务,就必须有一个进程常驻着,便于在特定的时候做一些特定的事情,比如广播接受者,他就不支持静态注册,也就是说如果我们想接受屏幕开关启动的广播,必须要在进程中动态注册,这个时候如果没有一个常驻的进程,锁屏业务就无法正常的为用户展开服务。二原创 2017-10-16 14:30:03 · 724 阅读 · 0 评论 -
面试记录第二十二节——(lint检查)
一、问:什么是Android lint检查?答:lint他其实是一个静态代码分析工具,它能够对你Android项目中潜在的BUG、可优化代码、安全性、性能、可用性、可访问性、国际化等进行检查。在Android api16之后,lint是已经自动安装了,包括我们android studio工具,也已经集成了lint检查和扫描工具,他可以及早的发现问题,让我们开发人员在代码上线以前,指出错误地方予以修复原创 2017-10-16 14:42:43 · 527 阅读 · 0 评论 -
面试记录第二十三节——(java网络编程、BIO/NIO/AI0)
一、基础知识:1、基础知识a) : ip:它是识别网络通讯的实体,可以理解为主机,也可以理解为每个路由器的端口。 端口号:一个通讯实体他可以拥有很多的通讯程序同事提供网络服务,这个时候就要通过端口号来区分通讯程序,一个通讯实体不能有两个通讯程序使用同一个端口号。b): tcp/udp协议: tcp:它是一个面向链接的保证可靠传输的协议,通过tcp协议传输,得到的是一个原创 2017-10-16 15:17:58 · 662 阅读 · 0 评论 -
面试记录第二十四节——(多线程)
一、问:java中可有几种方式实现多线程答:两种 一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。thread thread这个方式,会继承Thread,具体操作会在run()方法中来执行,最后线程的开启原创 2017-10-16 16:59:33 · 509 阅读 · 0 评论 -
面试记录第二十五节——(线程池)
问:一、线程池的好处答 1、降低我们资源的消耗,因为我们可以重复利用我们已经创建好的线程,降低不断创建和销毁线程所带来的资源消耗。 2、提高响应速度,我们知道当任务达到一定的数量时,任务不需要等到线程创建就立即执行(因为有创建好的可以循环利用)。 3、提高线程的可管理性,毕竟线程还是比较稀缺的资源,尤其是手机当中,如果你无限制的创建线程,不仅仅会消耗系统资源,同时还会降低系统原创 2017-10-16 17:26:57 · 470 阅读 · 0 评论 -
面试记录第十七节——(内存管理机制概述)
一、内存管理机制概述答:从操作系统的角度来说,内存就是一块数据存储区域,而且他是可以被操作系统调动的资源,在现在的多进程操作系统当中,内存管理十分重要。操作系统它会为每一个进程合理分配内存资源,这里我们来从两个角度来分析,什么是内存管理机制。1、分配机制 操作系统它会为每一个进程分配一个合理的大小,从而他能保证每一个进程能够正常的运行。而不至于内存不够使用或者某个进程占用太多的内存,这就是操作系原创 2017-10-12 17:37:36 · 367 阅读 · 0 评论 -
面试记录第十六节——(内存泄露)
一、java内存泄露基础知识答:简单的讲就是该被释放的对象没有得到释放,一直被某个实例所持有,导致不能垃圾回二、java内存的分配策略答:在java程序运行当中,它的内存分配策略是分为三个部分。 (一)静态存储区(也叫方法区):此处主要存放一些静态数据、全局遍历等等。在java内存当中,程序编译的时候,他已经分配好了内存,并且在静态存储区中存储的变量,在整个程序运行期间都存在。 (二)原创 2017-10-12 17:15:42 · 567 阅读 · 0 评论 -
面试记录第十六节——(UI卡顿的问题)
一、60fps 和 16ms的含义很多时候用户感觉UI卡顿,而造成这种卡顿的最主要根源是来源于渲染器,我们在开发过程中,大家再和UI沟通的时候就可以感觉到。一般我们在和UI工程师沟通的时候,他们总想把APP做的很绚丽、功能很丰富、图片很大很清晰,提高用户的体验效果。但是UI工程师是站在他们自己的角度考虑问题,他们并不知道,安卓系统很可能无法完成某些复杂的渲染操作。我们知道Android的系统每隔原创 2017-10-12 16:48:35 · 723 阅读 · 0 评论 -
面试题记录第十节——(okhttp、retrofit网络框架)
问:一、okhttp使用流程答:1、添加权限,2创建流程添加权限 配置Okhttp3非常简单,只需要在Android Studio 的gradle进行如下的配置: 创建流程1、创建一个OkhttpClient对象2、创建一个Request对象,通过内部类Builder调用生产Response对象。3、创建一个Call对象,调用execute(同步)/enqueue(异步)方法。priva原创 2017-10-11 17:41:27 · 4138 阅读 · 1 评论 -
面试记录第八节——(listview面试)
一、问:什么是listview?答:他是一个能将数据集合以动态滚动的方式展示到用户界面上的view二、问:listview适配器模式是什么?答:adapter为每一个数据制作view,然后交给listview来显示。adapter的出现就是保证数据和view 的分离。这也是一种mvc的设计模式。他只会通过adapter来处理数据源。同时adapter的接口又是统一的,所以这会让listview不用去原创 2017-09-22 15:40:04 · 515 阅读 · 0 评论 -
面试记录第十节——(代码混淆)
一、问:proguard到底是什么答:因为Java代码是非常容易反编码的,况且Android开发的应用程序是用Java代码写的,为了很好的保护Java源代码,我们需要对编译好后的class文件进行混淆。ProGuard是一个混淆代码的开源项目二、问:proguard作用答: 压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute)。 优化(Optimize):原创 2017-10-11 17:16:12 · 360 阅读 · 0 评论 -
面试记录第十一节——(volley框架)
一、问:volley框架的历史答:volley是在2013年Google I/O大会上推出了一个新的网络通信框架Volley。Volley既可以访问网络取得数据,也可以加载图片,并且在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。二、问:五种volley请求方式分别为?答:St原创 2017-10-11 18:11:44 · 541 阅读 · 0 评论 -
面试记录第十二节——(Butterknife 注入框架)
一、Butterknife 注解框架面试使用简介答:ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成。如下图所示二、ButterKnife 优势答: 1、强大的View绑定和Click事件处理功能,简化代码,提升开发效率 2、方便的处理Adapter里的ViewHold原创 2017-10-12 15:04:19 · 728 阅读 · 1 评论 -
面试记录第十三节——(什么是anr)
一、什么是anr答:anr就是一个无响应的对话框,主要原因就是在主线程做了耗时操作。 1、如果我们的应用程序有一段时间,点击不够灵敏,系统就会想用户显示一个对话框,而这个对话框的内容就是anr(Application Not Respinding:意思就是用户可等待,程序正在运行,同事你也可以选择关闭)。对于一个良好的、流程的、合理的APP来说,anr是绝对不能出现的。 2、在一个ac原创 2017-10-12 15:14:51 · 488 阅读 · 0 评论 -
面试记录第十四节——(什么是oom)
一、什么是oom答:当前占用的内存加上我们申请的内存资源超过了虚拟机的最大内存限制就会抛出Out of memroy异常(大部分的oom都是加载大图片引起的)二、一些容易混淆的概念答:内存溢出、内存抖动、内存泄露 内存溢出:就是我内存oom(Out of memroy),当前占有的内存加上我们申请的内存超过了虚拟机最大的内存限制就会抛出oom 内存抖动:是短时间内大量的对象被创建会被马原创 2017-10-12 15:32:15 · 447 阅读 · 0 评论