
android基础
文章平均质量分 65
张燕茹
宁静以致远
展开
-
Android中个人推崇的数据库使用方式
手机应用开发中经常会使用到数据库存储一些资料或者进行数据缓存,android中为我们提供了一个轻量的数据库,在上层进行了一层封装,同时还为我们提供了ContentProvider的框架,方便我们进行数据操作,以及在不同的程序之间进行数据共享。本文介绍一下,我在使用数据库的一些我认为比较好的习惯,欢迎与我讨论。关于框架通常网络操作,Json解析,我都会使用框架,这样可以很好的帮助转载 2016-08-01 13:55:08 · 644 阅读 · 0 评论 -
安卓HandlerThread使用
做程序员的好处就是,你永远都觉得你不会的太多。言归正传,所谓HandlerThread,本质就是一个Thread,并在这个Thread的run方法中进行了Looper的相关操作.下面是HandlerThread的run方法源码: /** * Call back method that can be explicitly overridden if needed to e原创 2016-08-23 10:55:57 · 774 阅读 · 0 评论 -
安卓大图加载开源库LargeImage源码解析
开源库地址:https://github.com/LuckyJayce/LargeImage先上原作者对此开源的简介,后面我们会有详细的介绍LargeImageAndroid 加载大图 可以高清显示10000*10000像素的图片实现原理监听View的显示区域的变化,然后加载显示区域内应该显示的图片区域,然后绘制到View上1.UpdateView负责监听显示区域的变化的V原创 2016-08-22 17:24:50 · 2779 阅读 · 0 评论 -
Volley 源码解析
转自:http://a.codekk.com/detail/Android/grumoon/Volley%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90 项目:Volley,分析者:grumoon,校对者:Trinea本文为 Android 开源项目源码解析 中 Volley 部分项目地址:Volley,分析的版本:35ce778,Dem转载 2016-08-23 13:35:26 · 566 阅读 · 0 评论 -
学习AIDL,这一篇文章就够了
1、概述AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。是的,首先我们知道的第一点就是:AIDL是一种语言。既然是一种语言,那么相应的就很自然的衍生出了一些问题:为什么要设计出这么一门语言?它有哪些语法?我们应该如何使用它?再深入一点,我们可以思考,我们是如何通过它来达到我们的目的的?更深入一点转载 2016-09-13 20:07:13 · 3371 阅读 · 1 评论 -
Android 动画基础总结
转自:http://a.codekk.com/detail/Android/lightSky/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8B%20Android%20%E5%8A%A8%E7%94%BB%E5%9F%BA%E7%A1%80 项目:,分析者:lightSky,校对者:Trinea本文为转载 2016-08-23 19:12:00 · 547 阅读 · 0 评论 -
Android状态栏微技巧,带你真正理解沉浸式模式
版权声明:本文出自郭霖的博客,转载必须注明出处。目录(?)[+]转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/51763825本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。记得之前有朋友在留言里让我写一篇关于沉转载 2016-08-24 10:31:14 · 1441 阅读 · 0 评论 -
Android Universal Image Loader 源码分析
转自:http://a.codekk.com/detail/Android/huxian99/Android%20Universal%20Image%20Loader%20%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90 项目:Android-Universal-Image-Loader,分析者:huxian99,校对者:Trinea本文为 And转载 2016-08-24 11:10:58 · 559 阅读 · 0 评论 -
Volley框架之三 疑难实现
不了解Volley可以先看这里: Android Volley入门到精通:初识Volley的基本用法Volley的源码解析可以看这里:Volley源码解析1 .Requset是在哪里处理的?主线程还是子线程?子线程处理Request,只要new了一个RequestQueue那么就会开启1个缓存线程,4个网络请求线程,CacheDispatcher/NetworkDispat转载 2016-08-24 14:41:27 · 1173 阅读 · 0 评论 -
Android触摸事件总结
下图给出了具体的流程分析。 点击查看大图 点击查看大图参考链接:http://a.codekk.com/detail/Android/Trinea/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8B%20View%20%E4%BA%8B%E4%BB%B6%E4%BC%A0%E9%80%92原创 2016-08-24 16:51:23 · 522 阅读 · 0 评论 -
正确使用Android性能分析工具——TraceView
原文出处: bxbxbai 的博客(@白瓦力) 前面唠叨最近公司app中有些列表在滑动的时候会有卡顿现象,我就开始着手解决这些问题,解决问题之前首先要分析列表滑动的性能瓶颈在什么地方。因为之前不会正确使用TraceView这个工具,主要是看不懂TraceView界面下方数据指标的值代表什么意思…以前我用StopWatch类来分析性能,现在觉得弱爆了…不过有些地方StopWatc转载 2016-08-10 15:05:13 · 629 阅读 · 0 评论 -
Android 编程下的 TraceView 简介及其案例实战
TraceView 是 Android 平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到 method。详细内容参考:Profiling with Traceview and dmtracedumpTraceView 简介TraceView 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中转载 2016-08-10 14:20:02 · 1120 阅读 · 0 评论 -
SQLite 数据类型
SQLite 数据类型SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。您可以在创建表的同时使用这些数据类型。SQLite 使用一个更普遍的动态类型系统。在 SQLite 中,值的数据类型与值本身是相关的,而不是与它的容器相关。SQLite 存储类每个存储在 SQLite 数据库中的值转载 2016-08-03 11:07:36 · 923 阅读 · 0 评论 -
Android Volley入门到精通:初识Volley的基本用法
from : http://www.apihome.cn/view-detail-70211.html1. Volley简介我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在转载 2016-08-18 17:19:39 · 781 阅读 · 0 评论 -
Android Volley入门到精通:使用Volley加载网络图片
from:http://www.apihome.cn/view-detail-70212.html在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法。本篇文章中我们即将学习关于Volley更加高级的用法在上篇文章中有提到过,Volley是将AsyncHttpClient和Universal-Image-Loader的优点集成于一身的一个框架。我们都知道,Un转载 2016-08-18 17:20:36 · 481 阅读 · 0 评论 -
Android Volley入门到精通:定制自己的Request
from : http://www.apihome.cn/view-detail-70213.html经过前面两篇文章的学习,我们已经掌握了Volley各种Request的使用方法,包括StringRequest、JsonRequest、ImageRequest等。其中StringRequest用于请求一条普通的文本数据,JsonRequest(JsonObjectRequest、转载 2016-08-18 17:21:40 · 1260 阅读 · 0 评论 -
内存分析工具MAT(Memory Analyzer Tool)从安装到使用
一.安装首先,你得有一个Eclipse(因为MAT是Eclipse的插件)然后,你要在Eclipse上安装MAT,步骤如下:1.点击Help,Install New Soft,就出现了以下Install界面:然后我们点击ADD,在弹出的框中填上Mat插件的地址:http://download.eclipse.org/mat/1.6/update-site/,确定后,点击Select原创 2016-08-17 19:42:55 · 42000 阅读 · 8 评论 -
layer-list标签会导致绘制多层从而引发过度绘制
在我们使用layer-list标签的时候,一定要小心,因为它会多绘制一层,可能会引发过度绘制。比如,你可以做一个测试:打开手机的调试过度绘制选项,一个layer-list下定义的几个item,然后查看一个View分别设置backGround为color和设置为这个layer-list所显示的过度绘制,你就会发现layer-list绘制的层数比设置backgroud为color多。原创 2016-09-09 15:49:59 · 1718 阅读 · 0 评论 -
安卓图片三级缓存策略与实现
前言:这里说的三级缓存,分别指的是:内存缓存、文件缓存和网络这三个层面。一般来说,我们首次加载图片,内存和文件是没有缓存的,这样我们需要从网络加载,加载完成后,我们会存到内存和文件中去;当再次加载图片的时候,我们会先查找内存有没有,如果有就直接显示内存中的图片,如果没有,我们会接着查找文件中是否有,如果文件中有,我们会显示文件中的图片,并且把它存到内存中去,这样下次我们在内存中就能找到它了原创 2016-08-18 19:26:08 · 6014 阅读 · 1 评论 -
Systrace生成的trace.html打开空白或者打不开的解决办法
1.必须用Chrome打开2.在mac电脑上,可能Chrome打开也是空白,解决办法是:在chrome地址栏中输入”chrome:tracing”,然后点击load按钮load你的trace.html文件。原创 2016-08-09 16:15:47 · 18894 阅读 · 8 评论 -
Android 应用启动速度优化之 Systrace 的使用
Systrace 简介Android 应用启动速度优化方式有很多方法,不过在优化之前,需要找到应用启动速度的瓶颈,找到关键点之后,再去优化,则可以达到事半功倍的效果。 Google 提供了很多 Debug 工具来帮助我们优化应用,这其中就包括 Systrace 工具。Systrace 是 Android 4.1 中新增的性能数据采样和分析工具。它可帮助开发者收集 Android 关转载 2016-08-09 16:18:29 · 3630 阅读 · 0 评论 -
对于Android的Activity启动模式的一些总结和理解
安卓Activity的启动模式1.1 两种启动方式1. 在AndroidMainfest.xml中启动例如:AndroidMainfest.xml.xml中设置Activity的launchMode=“singleTop”有singleInstance,singleTask,singleTop,standard四种可选2. 在代码中启动例如:原创 2016-10-13 14:55:17 · 3342 阅读 · 0 评论 -
PreferenceActivity的使用
事实上,PreferenceActivity是继承自ListActivity,如下: public abstract class PreferenceActivity extends ListActivity implements PreferenceFragment.OnPreferenceStartFragmentCallback下面是一个简单的PreferenceActivity的例子原创 2016-11-30 21:08:06 · 941 阅读 · 0 评论 -
Android的FastBoot的安装与环境变量设置
FastBoot的安装(Ubuntu)一般来说,如果你安装了Android Sdk,那么fastboot就在你的platform-tools目录下面.你也可以通过一下代码来安装:sudo apt-get updatesudo apt-get install android-tools-fastbootFastBoot的环境变量设置(Ubuntu)使用以下命令来查看fast原创 2016-12-14 14:08:01 · 9365 阅读 · 0 评论 -
Android 5.0以上通过UsageStatsManager类 获取应用使用情况(精品)
转自:http://www.jianshu.com/p/f88b6a9f7462在Android5.0之后API 出现了UsageStatsManger类 来获取用来提供给应用手机相关组件的使用统计,编译版本最少要SDK21.(注明,Android5.0系统大部分手机不支持这个类,Android5.1系统之后完全支持)首先需要在AndroidManifest.xml里声明权限转载 2017-03-15 13:55:05 · 2900 阅读 · 0 评论 -
JobService的使用及源码分析
转自:http://blog.youkuaiyun.com/fishle123/article/details/50790894Google在Android 5.0中引入JobScheduler来执行一些需要满足特定条件但不紧急的后台任务,APP利用JobScheduler来执行这些特殊的后台任务时来减少电量的消耗。本文首先介绍JobSerice的使用方法,然后分析JobService的源码实现。Jo转载 2017-04-12 16:41:57 · 1132 阅读 · 0 评论 -
SharedPreference.Editor的apply和commit方法异同
转自: http://blog.youkuaiyun.com/jake9602/article/details/18414841在Android 中存储数据时经常用SharedPreference, 并且在提交数据时一直用的是Editor的commit方法, 今天无意了看到了系统用了apply,看了方法的介绍, 原来这个方法也是可以提交数据的.apply方法在官方SDK说明如下:C转载 2017-04-05 13:11:28 · 395 阅读 · 0 评论 -
Android给app签上系统级签名
【转自】http://blog.youkuaiyun.com/qqxiaoqiang1573/article/details/52252843简介我们在做系统级的app开发时,肯定会遇到的问题就是给app签名了,像这种系统级的app开发,Android系统是没有直接给出keystore的签名文件的,那么我们要怎么给自己的app签上系统级签名呢?下面介绍两种方法。前提要做转载 2017-04-25 19:05:43 · 1553 阅读 · 0 评论 -
APK瘦身
转自:https://mp.weixin.qq.com/s?__biz=MzIzNDA3MDgwNA==&mid=2649230322&idx=1&sn=16966d0253a876a910975a45b94c7098&chksm=f0e75d89c790d49f799a356078644dd9d625766f15894721fca6f88f3d3121de601a72704299&scene=0转载 2017-05-18 20:25:12 · 677 阅读 · 0 评论 -
SharedPreference为什么不适合存储大量数据
转自:http://www.cnblogs.com/mingfeng002/p/5970221.htmlSharedPreference是Android上一种非常易用的轻量级存储方式,由于其API及其友好,得到了很多很多开发者的青睐。但是,SharedPreference并不是万能的,如果把它用在不合适的使用场景,那么将会带来灾难性的后果存储超大的value第一次看到下转载 2017-06-06 16:25:51 · 22220 阅读 · 2 评论 -
Android SharePreferences源码解析
转自:http://blog.youkuaiyun.com/yanbober/article/details/478663691 前言在我们开发Android过程中数据的存储会有很多种解决方案,譬如常见的文件存储、数据库存储、网络云存储等,但是Android系统为咱们提供了更加方便的一种数据存储方式,那就是SharePreference数据存储。其实质也就是文件存储,只不过是符合XML转载 2017-06-07 20:08:21 · 711 阅读 · 0 评论 -
Android应用在不同版本间兼容性处理
最近遇见了安卓低版本兼容高版本的问题,在网上发现了一篇文章讲的超好,特此转载。转自:转载 2017-06-19 20:41:12 · 6002 阅读 · 0 评论 -
SharedPreferences调用导致的ANR分析
转自:http://blog.chinaunix.net/uid-29506893-id-5761774.htmlANR文件提取的有用片段如下:----- pid 13431 at 2016-09-14 11:46:10 -----Cmd line: com.android.settingsat java.lang.Object.wait(Native Me转载 2017-06-05 11:28:46 · 7572 阅读 · 0 评论 -
[Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
转自:http://www.tuicool.com/articles/V7reai主要讲解Android Studio中生成aar文件以及本地方式使用aar文件的方法。在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件。分别存储位置:*.jar:库 /build/intermediates/bundles转载 2017-03-27 15:13:52 · 414 阅读 · 0 评论 -
Android.mk文件分析
从对Makefile一无所知开始,折腾了一个多星期,终于对Android.mk有了一个全面些的了解。了解了标准的Makefile后,发现Android.mk其实是把真正的Makefile包装起来,做成了一个对使用者来说很简单的东西。使用它来编译程序时,不管是动态库、可执行的二进制文件,还是Jar库、APK包,只要沿着一个简单的思路来做三大步就可以了:清除旧变量,设置新变量,调用编译函数。转载 2016-12-12 11:03:41 · 390 阅读 · 0 评论 -
ViewPager嵌套Fragment时Fragment的生命周期问题
我是StackFlow的搬运工~ViewPager嵌套Fragment的时候,Fragment的onResume()和onPause()不能很好的反应出Fragment的可见和不可见.网上也有网友说可以用setUserVisibleHint(boolean isVisibleToUser)方法来解决这个问题.但是~~~今天的这个解决方法有些不同,是以为外国网友提供的.如下:1) C原创 2016-12-05 19:11:49 · 1974 阅读 · 0 评论 -
WebView加载自定义error页面,解决自定义error页面但是原始error页面一闪而过的问题
一般来说,webView加载自定义error页面是这样做:例如,我下面的代码在error之后加载了缓存页面.mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) {原创 2016-12-06 10:11:08 · 4003 阅读 · 0 评论 -
Android N的URL类的变化
在做项目的时候,由于我使用URL类的反射来改变这个一些变量,然后在Android N上适配发现报错No field streamHandlers in class java.net.URL于是,查看了23和24的源码,发现URL类有一些变化:23的源码如下:/* * Licensed to the Apache Software Foundation (ASF) under原创 2016-12-07 17:49:14 · 1441 阅读 · 0 评论 -
Android 4.4以下ListView addHeader和addFooter放在setAdapter之后导致异常的原因分析和解决
问题重现: 在Android 19之前,ListView的addHeader和addFooter必须在setAdapter之前调用,否则就会有异常,Android 19以及之后是没有这个问题的。异常的具体表现为: 1.在setAdapter之后调用mListView.addHeaderView(mHeader);会抛出异常: Cannot add header view to list --原创 2016-12-08 13:17:44 · 1597 阅读 · 0 评论 -
使用Android Studio打开Android源码
这里,我写的简单精要一点: 一共分为以下几个步骤: 1.下载并且将你的源码编译通过 2.修改IDEA_HOME/bin/studio.vmoptions中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改 3.进入你的源码目录 检查out/host/linux-x86/framework/目录下是否有idegen.jar 如果idegen.jar不存在,执行: mmm dev原创 2016-11-28 14:55:02 · 4432 阅读 · 0 评论