自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

android开发笔记

android开发笔记

  • 博客(36)
  • 资源 (14)
  • 收藏
  • 关注

转载 谷歌官方Android应用架构库——Room 持久化库

翻译自:https://developer.android.google.cn/training/data-storage/room/index.htmlRoom提供了一个SQLite之上的抽象层,使得在充分利用SQLite功能的前提下顺畅的访问数据库。对于需要处理大量结构化数据的App来说,把这些数据做本地持久化会带来很大的好处。常见的用例是缓存重要数据块。这样当设备无法连网的时候,用户...

2018-03-15 08:22:00 857

转载 Android中数据存储--采用SQLite存储数据及在SDCard中创建数据库

布局文件main.xml的代码:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_...

2018-03-06 08:10:12 517

原创 怎样在异步任务执行完成后就可以获取执行结果

我们知道创建线程的方式有两种,一种是实现Runnable接口,另一种是继承Thread,但是这两种方式都有个缺点,那就是在任务执行完成之后无法获取返回结果,那如果我们想要获取返回结果该如何实现呢?从JAVA SE 5.0开始引入了Callable和Future,通过它们构建的线程,在任务执行完成后就可以获取执行结果。我们先回顾一下java.lang.Runnable接口,就声明了run()...

2018-03-30 08:17:17 7015

翻译 Rx介绍

ReactiveX的历史ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScript和C++,Rx近几年越来越流行了,现在已经支持几乎全部的流行编程语言了,...

2018-03-30 08:11:29 2505

原创 Android NestedScrolling 子View与父View之间嵌套滑动

一、概述Android在support.v4包中为大家提供了两个接口类:NestedScrollingParentNestedScrollingChild这样的嵌套滑动机制是在 Android 发布 Lollipop 之后提供的。要实现这两个接口,必需是ViewGroup的子类。二、NestedScrollingChildpublic interface NestedSc...

2018-03-26 17:00:16 705

原创 'android:attr/keyboardNavigationCluster' not found.解决办法

总的原则:compileSdkVersion >= 所用支持库的版本

2018-03-26 10:41:22 7076 1

原创 Plugin with id 'org.greenrobot.greendao' not found.怎么办?

Plugin with id 'org.greenrobot.greendao' not found.是因为没有在Project的build.gradle中配置classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'引起的。 当配置了classpath 'org.greenrobot:greendao-gradle-...

2018-03-23 08:35:35 13869 1

转载 java动态代理--一个简单的例子

1.什么是动态代理代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代...

2018-03-20 08:20:27 169

原创 Java的反射机制

一、什么是class类在面向对象的世界里,万物皆对象。类是对象,类是java.lang.Class类的实例对象。另外class类只有java虚拟机才能new出来。任何一个类都是Class 类的实例对象。这实例对象有三种表达方式:public class User{}public class ClassTest{User u=new User(); //方式1: Class c1...

2018-03-16 08:55:38 171

转载 Java代理和动态代理机制分析和应用

概述代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。根据代理类的生成时间不同可以将代理分为静态代理和动态代理两种。代理模式一般涉及到的角色有4种主题接口:定义代理类和真实主题的公共对外方法,也是代理类代理真实主题的方法;真实主题:真正实现业务逻辑的类;代理类:用来代理和封装真实...

2018-03-16 08:43:33 157

转载 DexClassLoader和PathClassLoader的区别

在使用Java虚拟机时,我们经常自定义继承自ClassLoader的类加载器。然后通过defineClass方法来从一个二进制流中加载Class。而在Android中我们无法这么使用,Android中ClassLoader的defineClass方法具体是调用VMClassLoader的defineClass本地静态方法。而这个本地方法什么都没做,只是抛出了一个“UnsupportedOp...

2018-03-16 08:27:40 3384

原创 String数组转List,List转String数组

//List 转换为 String数组List<String>list=newArrayList<String>();list.add("a1");list.add("a2");String[]toBeStored=list.toArray(newString[list.size()]);for(Strings...

2018-03-16 08:20:52 25542

原创 java里一段字符串按照空格拆分,然后再按逗号拆分怎么写

publicclassSplit{publicstaticvoidmain(String[]args){Stringsss="12010,22011,32012";String[]arr=sss.split("|,");//根据“”和“,”区分System.out.println(java.u...

2018-03-16 08:19:00 5717

转载 带两个类型参数的泛型类

在泛型中,可以声明一个以上的类型参数,只需要在这些类型参数之间用逗号隔开。下面看一个简单的例子。public class TwoGen<T, V> { private T ob1; private V ob2; public TwoGen(T o1,V o2) { ob1 = o1; ...

2018-03-16 08:11:42 11590

转载 Android Room Library 简单使用

Room 的一些特点编译时 sql 语句检查。相信大家都有过 app 跑起来,执行到 db 语句的时候 crash,检查之后发现原来是 sql 语句少了一个 ) 或者其它符号之类的经历。Room 会在编译阶段检查你的 DAO 中的 sql 语句,如果写错了(包括 sql 语法错误跟表名、字段名等等错误),会直接编译失败并提醒你哪里不对。 sql 查询直接关联到 Java 对象。这个应该不用详...

2018-03-14 16:52:07 635

转载 SortedList

SortedList是什么?源码头注释如下:A Sorted list implementation that can keep items in order and also notify for changes in the list。翻译: 一个有序列表(数据集)的实现,可以保持ItemData都是有序的,并(自动)通知列表(RecyclerView)(数据集)中的更改。...

2018-03-14 12:47:48 475

转载 DiffUtil

一 概述DiffUtil是support-v7:24.2.0中的新工具类,它用来比较两个数据集,寻找出旧数据集-》新数据集的最小变化量。 说到数据集,相信大家知道它是和谁相关的了,就是我的最爱,RecyclerView。 就我使用的这几天来看,它最大的用处就是在RecyclerView刷新时,不再无脑mAdapter.notifyDataSetChanged()。 以前无脑mAdapte...

2018-03-14 12:38:15 1699

原创 ScrollView和ListView嵌套问题。

private void setListViewHeightBasedOnChildren(ListView listView) { if (listView == null) { return; } ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) ...

2018-03-13 16:17:46 162

原创 GreenDao3.2.2建立多表之间的关联

在上一篇文章GreenDao保存List&lt;String&gt;类型数据中,介绍了如何使用GreenDao保存List&lt;String&gt;类型的数据, 但是在实际开发中经常会遇到List的泛型并不是String类型的,而是另外一种自定义的Bean类类型。 比如,在上一篇文章中的User代表一个用户,但是在每一个用户中可能会保存一个订单的集合–List. 那么这种情况就需要创建多个...

2018-03-13 15:28:00 4186 2

原创 GreenDao3.2.2保存List<String>类型数据

在Android框架之GreenDao3.2.2的使用中,介绍了如何简单使用GreenDao,并创建了User类来保存一些简单的数据。 但是假如在User中有一种List类型的数据也需要保存到数据库中,该如何处理呢? 答案很简单,可以转换一下思路,遍历List数据,然后将所有的String对象都append到一个StringBuilder中,然后保存在数据库中即可。 事实上,Gree...

2018-03-13 15:19:41 2723

转载 详解java类的生命周期

引言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大多只是告诉你“怎样做”,但至于“为什么这样做”却不多说,所以造成大家在基础和原理方面的知识比较匮乏,所以笔者今天就斗胆来讲一下这个问题,权当抛砖引玉,希望对在这个问题上有疑惑的朋友有所帮助,...

2018-03-09 08:14:15 337 1

原创 java 获取本机的默认编码

System.out.println("本机的默认编码====="+System.getProperty("file.encoding"));

2018-03-09 08:13:12 2020

转载 Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系

1、 概述Handler 、 Looper 、Message 这三者都与Android异步消息处理线程相关的概念。那么什么叫异步消息处理线程呢?异步消息处理线程启动后会进入一个无限的循环体之中,每循环一次,从其内部的消息队列中取出一个消息,然后回调相应的消息处理函数,执行完成一个消息后则继续循环。若消息队列为空,线程则会阻塞等待。说了这一堆,那么和Handler 、 Looper 、Message...

2018-03-08 09:45:16 133

转载 Android Handler 异步消息处理机制的妙用 创建强大的图片加载类

1、概述一般大量图片的加载,比如GridView实现手机的相册功能,一般会用到LruCache,线程池,任务队列等;那么异步消息处理可以用哪呢?1、用于UI线程当Bitmap加载完成后更新ImageView2、在图片加载类初始化时,我们会在一个子线程中维护一个Loop实例,当然子线程中也就有了MessageQueue,Looper会一直在那loop停着等待消息的到达,当有消息到达时,从任务队列按照...

2018-03-08 09:31:49 147

转载 Android HandlerThread 完全解析

转载出处: http://blog.csdn.net/lmj623565791/article/details/47079737;  本文出自:【张鸿洋的博客】  1、概述话说最近股市变动不变,也成了热火朝天的话题。不知道大家有没有考虑做个实时更新股市数据的app呢?假设我们要做一个股市数据实时更新的app,我们可以在网上找个第三方的股市数据接口,然后在我们的app中每隔1...

2018-03-08 09:21:55 135

转载 Android IntentService完全解析 当Service遇到Handler

转载出处: http://blog.csdn.net/lmj623565791/article/details/47143563; 本文出自:【张鸿洋的博客】一 概述大家都清楚,在Android的开发中,凡是遇到耗时的操作尽可能的会交给Service去做,比如我们上传多张图,上传的过程用户可能将应用置于后台,然后干别的去了,我们的Activity就很可能会被杀死,所以可以考虑将上传操作交给Serv...

2018-03-08 09:07:53 283

转载 Android 音频焦点(Audio Focus)

引子说 Audio Focus 前先说个很简单需求:来电时暂停正在播放的音乐,电话结束时恢复播放。看到这个需求,第一反应肯定是:监听用户来电状态,作相应操作。这里不多做介绍,这样做有个不好的地方就是需要隐私权限!这样做一点也不优雅。后来搜索时看到一篇分析文章:Android来电时停止音乐播放的流程(顺便说一嘴,这篇转载居然不注明出处!!)。文章里的分析很明确的指出,系统在框架层就很好的...

2018-03-08 08:55:40 7200

转载 android里面layer-list中的inset和clip到底有什么作用

Inset Drawable:用于通过指定的间距把图片插入到XML中,它在View需要比自身小的背景时常用。有些像padding的作用。例子:  第一步:drawable文件中建立inset_drawable.xml  &lt;?xml version="1.0" encoding="utf-8"?&gt;  &lt;inset  xmlns:android="http://schema...

2018-03-08 08:49:45 3673

转载 如何向一个Fragment传递参数---setArguments方法的介绍

在我们平常开发中经常会用到Fragment,当我们使用Fragment时一般是通过new Fragment的构造方法来实现,如果我问你怎么向一个Fragment传递参数,你是不是会首先想到通过构造方法,当面试被问到这个问题的时候我也是这么想的,后来发现自己错了,现在给大家讲一下究竟该怎么做。首先我们看构造方法这种方式为什么不行,根据Android文档说明,当一个fragment重新创建的时候,系统...

2018-03-08 08:37:55 1000

转载 ListView嵌套GridView时遇到的一些坑

需求是用ListView来嵌套GridView来显示数据,GridView是用来显示图片的。照着常规方法将GridView作为ListView中Item布局的一部分来显示,给GridView设置numColumns=3,这里设置了九张图片,按道理分3行显示,但是运行程序后只显示了一行数据,也就是3行图片。试着改了改GridView的高度,木有任何作用。why?由于ListView和GridVi...

2018-03-08 08:26:38 1345

转载 Android Scroller完全解析,关于Scroller你所需知道的一切

代码下载地址:https://github.com/suyimin/ScrollerDemo,欢迎Star!Scroller是一个专门用于处理滚动效果的工具类,可能在大多数情况下,我们直接使用Scroller的场景并不多,但是很多大家所熟知的控件在内部都是使用Scroller来实现的,如ViewPager、ListView等。而如果能够把Scroller的用法熟练掌握的话,我们自己也可以轻松实...

2018-03-07 15:27:20 602

转载 Android 子线程中操作UI

开发Android的都知道,自2.2之后,谷歌工程师规定了子线程不允许更新UI,原因说起来也简单,可以想一想,如果多个子线程同时操作UI,那么该听谁的呢,所以,现在在子线程中写关于操作UI的代码,运行就回报异常。我们都知道耗时的操作,例如数据库读写大量数据,网络请求,这些都比较耗时间,一般情况下都会放入子线程里面操作,这样不会阻塞UI。但是每次当我们操作完这些数据之后,就要更新UI的数据,但是...

2018-03-06 20:21:40 464

转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

今天我们将继续上次未完成的话题,从源码的角度分析ViewGroup的事件分发。首先我们来探讨一下,什么是ViewGroup?它和普通的View有什么区别?顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子VewGroup,是Android中所有布局的父类或间接父类,像LinearLayout、RelativeLayout等都是继承自ViewGroup的。但ViewGro...

2018-03-06 09:34:10 147

转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

转载自:http://blog.csdn.net/guolin_blog/article/details/9097463那我们现在就开始吧!比如说你当前有一个非常简单的项目,只有一个Activity,并且Activity中只有一个按钮。你可能已经知道,如果想要给这个按钮注册一个点击事件,只需要调用:button.setOnClickListener(new OnClickListener() { ...

2018-03-06 08:59:51 174

转载 ListView复用和优化之多布局详解

前言在上一篇文章中,我已经非常详细的阐述了ListView的复用原理和几个大家不太明白的地方.也同时重现了复用的问题并告诉大家如何去解决.如果你没有看上一篇,请先移步,这篇基于上一篇的知识继续讲解ListView中多布局是个什么原理。实现联系人列表的展现形式先随便放一个联系人列表的效果图,博主随便找了一张图给大家看看效果先我们可以看到,这里肯定是一个列表来实现的,如...

2018-03-05 08:38:22 192

转载 ListView复用和优化详解

前言我们每一个Android开发人员对ListView的使用肯定是很熟悉的,然而多少人能真正的懂ListView的缓存机制呢,说白了就是ListView为了提高效率,而内部实现的一种优化,牺牲一点内存。而这种优化就需要复用ItemView(也就是item对应的View).那么下面楼主来对ListView和RecyclerView的item复用问题做一个深入的讲解先来一张大家学习的时候都遇到...

2018-03-05 08:17:27 238

安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world.docx

安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world

2019-08-25

01 Protocol Buffer技术详解(语言规范).doc

01 Protocol Buffer技术详解(语言规范).doc

2016-05-08

java设计模式

java设计模式

2016-05-08

OkHttp使用教程

OkHttp使用教程 OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。

2015-12-18

IDirectDraw7的使用

LPDIRECTDRAW7 lpDD; //DirectDraw对象 LPDIRECTDRAWSURFACE7 lpDDSPrimary ; //DirectDraw主表面 LPDIRECTDRAWSURFACE7 lpDDSBack ; //后台缓冲表面 DDSURFACEDESC2 ddsd ; //表面描述 DDSCAPS2 ddscaps ; 而且声明完表面描述后应立即用 ZeroMemory( &ddsd, sizeof( ddsd ) ); ZeroMemory( &ddscaps, sizeof( ddscaps ) ); 这两个语句使ddsd和ddscaps中的变量都为零,如果不这样做下面的CreateSurface会不成功。

2014-10-14

DirectDraw7编程基础

首先定义一个指向DirectDraw对象的指针,创建DirectDraw对象,查询以获取最新的DirectDraw接口,设置协作等级,设置显示模式。

2014-10-14

MTK短信编码.docx

目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。一般的PDU编码由A B C D E F G H I J K L M十三项组成。

2012-12-06

c语言设计(最全).ppt

C程序设计 上海工程技术大学 主讲:李旭芳 教材 C程序设计 (第二版) 谭浩强编著 清华大学出版社

2012-12-06

常用编码详解.docx

详细介绍各种常见编码的转换算法。通用字符集(UCS)、Unicode编码、UTF-8编码、UTF-7编码、GB2312编码、URL 解码

2012-12-06

刷机原理04 Android系统Recovery模式的工作原理.wps

Android系统Recovery模式的工作原理 在使用update.zip包升级时怎样从主系统(main system)重启进入Recovery模式,进入Recovery模式后怎样判断做何种操作,以及怎样获得主系统发送给Recovery服务的命令,这一系列问题的解决是通过整个软件平台的不同部分之间的密切通信配合来完成的。为此,我们必须要了解Recovery模式的工作原理,这样才能知道我们的update.zip包是怎样一步步进入Recovery中升级并最后到达主系统的。 一、Recovery模式中的三个部分 ................

2012-10-24

刷机原理03 Android系统的三种启动模式.wps

Android系统的三种启动模式 一、 系统更新update.zip包的两种方式 1. Android在升级系统时获得update.zip包的方式有两种。一种是离线升级,即手动拷贝升级包到SD卡(或NAND)中,通过settings--&gt;About phone--&gt;System Update--&gt;选择从SD卡升级。另一种是在线升级,即OTA Install(over the air)。用户通过在线下载升级包到本地,然后更新。这种方式下的update.zip包一般被下载到系统的/CACHE分区下。 2. 无论将升级包放在什么位置,在使用update.zip更新时都会重启并进入Recovery模式,然后启动recovery服务(/sbin/recovery)来安装我们的update.zip包。 ............

2012-10-24

刷机原理02 Android升级包update.zip的生成过程分析.wps

Android升级包update.zip的生成过程分析1) 对于update.zip包的制作有两种方式,即手动制作和命令生成。 第一种手动制作:即按照update.zip的目录结构手动创建我们需要的目录。然后将对应的文件拷贝到相应的目录下,比如我们向系统中新加一个应用程序。可以将新增的应用拷贝到我们新建的update/system/app/下(system目录是事先拷贝编译源码后生成的system目录),打包并签名后,拷贝到SD卡就可以使用了。 第二种制作方式:命令制作。Android源码系统中为我们提供了制作update.zip刷机包的命令,即make otapackage。该命令在编译源码完成后并在源码根目录下执行。 具体操作方式:在源码根目录下执行 ①$ . build/envsetup.sh。 ②$ lunch 然后选择你需要的配置(如17)。 ③$ make otapackage。 ....................

2012-10-24

刷机原理01 update.zip包目录结构

update.zip包目录结构 boot.img是更新boot分区所需要的文件。这个boot.img主要包括kernel+ramdisk。 system/目录的内容在升级后会放在系统的system分区。在Android源码编译后out/target/product/generic/system/。

2012-10-24

空空如也

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

TA关注的人

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