Android开发
文章平均质量分 82
由此及彼
代码可以更优雅。
展开
-
90%的android开发者都会遇到的问题,当sjk_daemon遇见ADB server didn't ACK
2015年第一篇博客哈~ecplise做Android开发,写的兴起时,run一下吧,猛然发现:ADB server didn't ACK* failed to start daemon *醉了,神马情况~凭着“工程狮”的直觉,估计是端口的problem!ps:adb的端口为“5037”win+R-->cmd输入如图指令,看看是谁在霸占5037端口,找出pid:原创 2015-02-13 17:08:58 · 713 阅读 · 0 评论 -
Android学习笔记_SQLite数据库存储
亲,你知道吗?Android系统内置了数据库哟~ SQLite,一款轻量级关系数据库,运算速度快,占用资源少,特别适合在移动设备上使用。 SQLite支持标准SQL语法,遵循数据库ACID事务(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))。SQLiteOpenHelper帮助类,让我们更方便的管理数据库。 抽象类原创 2015-07-26 16:34:43 · 533 阅读 · 0 评论 -
泛谈主流手游引擎
游戏引擎,一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。手机游戏引擎则是在手机和平板上运行的游戏的引擎,智能手机和平板的触摸+传感器的操作方式与传统游戏相比有很大的不同,而操作方式直接影响手机上流行的游戏模式与PC和主机的不同,因此不能简单的将游戏引擎转载 2015-11-16 15:37:15 · 870 阅读 · 0 评论 -
移动开发的福音,BaaS后端云服务
BaaS(Backend as a Service),后端即服务是为移动应用开发者提供整合云后端的边界服务,一般提供存储、托管环境、消息推送等功能,使开发人员无需在基础架构、服务集成、可伸缩性等繁冗问题上浪费过多资源,降低开发者的应用开发成本。简单介绍以下几种移动后端云服务,倾向于国内的BaaS服务。1、AVOS CloudAVOS Cloud 是加速应用开发的一站式解转载 2015-12-13 11:16:47 · 1574 阅读 · 0 评论 -
Android版本和API Level
Android版本和API Level一一对应哦~转载 2015-12-21 18:21:35 · 485 阅读 · 0 评论 -
Android AsyncTask简介-知识点+代码
AsyncTask和Handler对比1 ) AsyncTask实现的原理,和适用的优缺点AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点:l 简单,快捷l 过程可控 使用的缺点:l转载 2016-01-13 18:01:31 · 381 阅读 · 0 评论 -
浅谈Android控件中的ListView优化
这篇文章只是总结下getView里面优化视图的几种写法,就像孔乙己写茴香豆的茴字的几种写法一样,高手勿喷,勿笑,只是拿出来分享,有错误的地方欢迎大家指正,谢谢。 listview Aviewthatshowsitemsinaverticallyscrollinglist。 一个显示一个垂直的滚动子项的列表视图在android开发中,使用listview的地方很多,用它来展现数据,成一个转载 2016-01-13 21:18:25 · 381 阅读 · 0 评论 -
Android中ListView的几种常见优化方法
Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法:首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的List集合来作为ListView的项目所要显示的内容,每一个条目都是一个自定义的组件,这个组件中只包含一个te转载 2016-05-13 21:02:17 · 274 阅读 · 0 评论 -
Android内存泄漏的八种可能
Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆的可能,所以写出来的代码更为安全。不幸的是,在Java中仍存在很多容易导致内存泄漏的逻辑可能(logical leak)。如果不小心,你的Android应用很容易浪费掉未释放的内存,最终导致内存用光的错误转载 2016-07-13 21:45:55 · 315 阅读 · 0 评论 -
深入理解Android异步消息处理机制
一、概述Android 中的异步消息处理主要分为四个部分组成,Message、Hndler、MessageQueue 和 Looper。其关系如下图所示:1. Message 是线程之间传递的消息,它可以在内部携带少量信息,用于在不同线程之间交换数据。2. MessageQueue 是消息队列,它主要用于存放所有由 Handler 发送过来的消息,这部分消息会一直在转载 2016-07-15 19:52:31 · 269 阅读 · 0 评论 -
TimePicker组件的深入解析
Android TimePicker组件的深入解析,自定义TimePicker组件,实现时间的秒数只显示00或者30,实现时间的整点选择或半点选择上截图(注意文章中有些截图没上,如果想看请下载附件里面的文档) 大家注意设置时间的时候分钟只能设置00或者30,这就是我自定义的,因为最近公司有这样的属性,需要用户提交的时间是整点或者半点 1. TimePicker组转载 2016-08-29 10:35:34 · 1830 阅读 · 0 评论 -
Android EditText 的那些事
Android上有很多输入法应用,每种输入法都有各自的特点,输入法多数时候是和EditText配合使用,结合我自己的亲身实践分享一下使用EditText过程中遇到的一些问题及解决方法。设置默认输入法 有时候为了提高用户体验,在弹出输入法时需要设置默认的输入状态,比如单词应用弹出输入法时,输入法最好是在英文输入状态下。如果是字典应用,弹出输入法时最好是在中文输入状态下,Android并没有转载 2016-08-07 21:30:41 · 596 阅读 · 4 评论 -
转一篇简易易懂的android回调实现
回调机制在 Android 监听用户界面操作中的体现本文讨论以下两个内容:1. 回调函数2. 回调机制在 Android框架 监听用户界面操作中的作用一 回调函数回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调转载 2016-08-29 14:28:43 · 502 阅读 · 0 评论 -
自定义控件实战-Android UI模板设计(文末小彩蛋)
先简单说一下实现方向:接下来我们一步步实现方向:1.设计所需属性:在value目录下新建attrs.xml,属性名及类型, 2.实现我们的View:新建类继承Re原创 2016-08-29 15:19:12 · 612 阅读 · 0 评论 -
简单又好看的扁平化按钮。
今天分享一下流行的扁平化按钮。完全不需要用到图片哦。效果图如下:里面有2个按钮都是一样的模式。只要修改的色值就可以。下面跟我来更新你的UI吧。首先编写 button.xml代码如下:转载 2016-08-19 17:28:32 · 727 阅读 · 0 评论 -
EventBus使用详解(一)——初步使用EventBus
一、概述EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。1、下载EventBus的类库源码:https://github.com/greenrobot/EventBus2、基本使用转载 2016-09-09 21:08:01 · 251 阅读 · 0 评论 -
EventBus使用详解(二)——EventBus使用进阶
一、概述前一篇给大家装简单演示了EventBus的onEventMainThread()函数的接收,其实EventBus还有另外有个不同的函数,他们分别是:1、onEvent2、onEventMainThread3、onEventBackgroundThread4、onEventAsync这四种订阅函数都是使用onEvent开头的,它们的功能稍有不同,在介绍不同之前先介转载 2016-09-10 14:39:22 · 429 阅读 · 0 评论 -
Android中的状态保存-SharedPreferences和Bundle(文末小彩蛋)
SharedPreferences 是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences 还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串。这样你应该就能明显地感觉到,使用Sha原创 2016-09-10 16:03:23 · 1882 阅读 · 0 评论 -
必知必会-异步加载(1)(文末小彩蛋)
为什么要使用异步加载:1.Android单线程模型;2.耗时操作阻塞UI线程。常用方式包括多线程/线程池和AsyncTask(底层线程池)。在Android中实现异步任务机制有两种方式,Handler和AsyncTask。Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制原创 2016-08-30 14:58:04 · 376 阅读 · 0 评论 -
详解ListView属性
引子:在android界面中,经常会用到ListView控件,在UI设计中,很多人都希望能够美化一下这个控件的背景。改变背景其实很简单,在布局文件中,ListView控件加入代码android:background="@drawable/bg",bg是背景图片的名称。不过这样做后,背景是改变了,但当拖动时,或者点击list的空白位置会发现ListItem都变成黑色的了,破坏了整体的效果。如转载 2016-08-30 16:35:54 · 513 阅读 · 0 评论 -
Android Studio初体验(1)
工欲善其事必先利其器。先准备好环境。JDK8安装及配置(1.要求7以上版本,之前用的6,果断被坑的节奏,2.重装JDK时记得程序-卸载程序,干净利落哈;3.看清操作系统windows或者MAC或者Linux,注意下位数32位或者64位要看清;4.配置变量时,JAVA_HOME末尾一定不能加;一定不能加;一定不能加;重要的事情说三遍)android-studio-bundle原创 2016-08-09 09:05:30 · 474 阅读 · 0 评论 -
Android Studio初体验(2)
AS初体验,仍在继续。想当年在Eclipse中改UI,marginTop:10px-20px-30px···,界面来回切换,不胜其烦。在AS中就方便多了,进入Text页面,左边编辑右边预览,从此再也不用来回切换,perfect!小插曲:在预览时遇到问题,Rendering Problems:Exception raised duringrendering: com/android/原创 2016-08-09 14:22:55 · 1364 阅读 · 0 评论 -
你可能不知道的layout_weight
1.layout_weight说到layout_weight,大家一般都会说,这还不简单,不就是一个权重吗?那看到这几行代码,大家觉得UI会是什么样的呢?<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" androi原创 2016-08-31 11:08:21 · 369 阅读 · 0 评论 -
小红书Android客户端演进之路
小红书Android客户端第一个版本于2014年8月8日发布,转眼到了2016年8月8日,小红书Android版本发版两周年。趁机回顾一下小红书的Android版本,两年中我们踩过很多坑,收获很多经验,分享出来与大家共勉。小红书从最初1.0到现在目前4.7版本,历经两年,安装包从原先的5M发展到现在的17M,产品模块也从原先的只有社区模块发展到了具有社区和电商两个大模块。App包含社区、电商、转载 2016-08-10 09:10:33 · 1103 阅读 · 0 评论 -
Android下拉刷新控件SwipeRefreshLayout源码浅析
SwipeRefreshLayout是Android官方的下拉刷新控件,使用简单,界面美观,不熟悉的朋友可以随便搜索了解一下,我们这里直接进入正题。首先给张流程图吧,标出了几个主要方法的作用,可以结合着看一下哈。这种下拉刷新控件的原理不难,基本就是监听手指的运动,获取手指的坐标,通过计算判断出是哪种操作,然后就是回调相应的接口了。转载 2016-08-10 09:17:47 · 381 阅读 · 0 评论 -
[Learn Android Studio 汉化教程]使用 Android Studio 编程
This chapter covers how to write and generate code in Android Studio. Android Studio uses its knowledge of object-oriented programming to generate extremely relevant and well-formed code. Features c转载 2016-08-10 10:35:34 · 1997 阅读 · 0 评论 -
解密自定义View
首先,为什么要自定义控件?1.特定的显示风格;2.处理特有的用户交互;3.优化我们的布局;4.封装···那么,如何自定义控件?1.自定义属性的声明和获取; 1.1在res/values/attrs.xml定义声明; 1.2在layout.xml中使用; 1.3在View的构造方法中获取。2.测量onMeasure;(EXACTLY准确、AT原创 2016-08-10 11:52:07 · 267 阅读 · 0 评论 -
1min了解Dialog(文末小彩蛋)
AlertDialog 可以在当前的界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此一般AlertDialog 都是用于提示一些非常重要的内容或者警告信息。比如为了防止用户误删重要内容,在删除前弹出一个确认对话框。下面我们来学习一下它的用法,修改MainActivity 中的代码,如下所示:原创 2016-09-12 20:07:57 · 317 阅读 · 0 评论 -
试水Fragment(1)-第一种声明方式
官方API文档是最好的教程,从官方文档入手,同时考虑到直接访问Google比较慢,这里提供oschina的链接。http://tool.oschina.net/apidocs/apidoc?api=android/referenceWhen you add a fragment as a part of your activity layout, it lives in a V原创 2016-08-15 14:05:52 · 441 阅读 · 0 评论 -
试水Fragment(2)-动态添加Fragment
现在我们动态添加Fragment,参考最好的教材,官方文档:http://tool.oschina.net/apidocs/apidoc?api=android/reference说一条小定律:Manager一般由上下文get,如下FragmentManager。Performing Fragment TransactionsA great feature about usin原创 2016-09-01 19:51:36 · 384 阅读 · 0 评论 -
[Learn Android Studio 汉化教程]Reminders实验(一)
使用Git时遇到Can't start Git: git.exe Probably the pathto Git executable is not valid. 问题,顾名思义Git配置有问题,考虑到从官网下载Git特别慢,在这里分享自己的Git-2.6.3-64-bit.exe。云盘链接:http://pan.baidu.com/s/1ge1YlbH参考:[Le原创 2016-08-11 13:19:16 · 1205 阅读 · 0 评论 -
试水Fragment(3)-5min仿微信主界面
今天我们通过Fragment写一个微信主界面:首先写好主布局文件:线性布局(替换)+线性布局(选项卡),代码如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_he原创 2016-09-02 13:52:51 · 263 阅读 · 0 评论 -
Android应用安全防御
Android应用的安全隐患包括代码安全、数据安全、组件安全、WebView等几个方面。1. 代码安全代码安全主要是指Android apk容易被反编译,从而面临软件破解,内购破解,软件逻辑修改,插入恶意代码,替换广告商ID等风险。我们可以采用以下方法对apk进行保护:1.1 代码混淆 代码混淆可以在一定程度上增加apk逆向分析的难度。Android SDK从2.转载 2016-08-24 11:38:02 · 629 阅读 · 0 评论 -
浅谈Android底层技术-Java层系统服务
为什么我们需要学习系统服务呢? 底层系统服务是Android 框架裡最接近Linux/Driver的部分。为了充分发挥硬件设备的差異化特性,系统服务是让上层Java应用程序來使用Driver/HWDevice 特色的重要管道。于此,先仔细解析Java层系统服务的架构,然后阐述这系统服务的代码开发要点,以及其API设计方法。 系统服务,Android框架里最接近Linux/Driver的部分原创 2016-08-12 09:59:24 · 596 阅读 · 0 评论 -
[Learn Android Studio 汉化教程]Refactoring Code
重构代码在Android Studio中开发,解决方案不会总是一蹴而成的。作为一个有效率的编程者,在你的开发,调试和测试中需要一些弹性以及代码重构。随着在这章中的行进,你将明白Android Studio如何产生代码;在这章里你将看到Android Studio如何重构你的代码。重构代码最大的风险是可能引入不期望的错误。通过分析某些风险重构操作的结果,Android Studio减低了这些转载 2016-08-12 10:56:56 · 417 阅读 · 0 评论 -
还在用notifyDataSetChanged的或许已经out(ListView)
项目使用了listView这个控件,而且自定义了adapter。在更新item的进度条时发现每次使用notifyDataSetChanged(),都会去调用自定义adapter中的getView方法。这时问题就出现了,用notifyDataSetChanged方法去更新listView中的item,是更新需要更新的Item呢?还是更新所有的item呢?如果是更新所有的item那么效率不就会很低吗?转载 2016-09-14 13:51:59 · 384 阅读 · 0 评论 -
试水Fragment(4)-重要的生命周期
试水Fragment,了解它的生命周期和相关方法是很重要的一个环节,让我们参考官方文档进行分析:http://www.android-doc.com/guide/components/fragments.html 要创建一个fragment,必须创建一个fragment的子类(或是继承自它的子类)。fragment类的代码看起来很像activity。它与activity一样原创 2016-09-03 11:20:38 · 267 阅读 · 0 评论 -
试水Fragment(5)-5min实现Fragment之间的通信
这次我们试水Fragment,借助Tag和Fragment之间共同的桥梁Activity进行Fragment之间的通信,在一个Fragment中点击Button从而改变另一个Fragment中TextView的内容。下面我们一步步来实现它,说好的5min,但3min应该就能搞定:首先写好主布局文件,一个线性布局里包含2个线性布局,2个子线性布局用于存放Fragment,源代码如下:<原创 2016-09-03 14:13:44 · 224 阅读 · 0 评论 -
10min了解ContentProvider
我们学的Android 数据持久化的技术包括文件存储、SharedPreferences 存储、以及数据库存储。不知道你有没有发现,使用这些持久化技术所保存的数据都只能在当前应用程序中访问。虽然文件和SharedPreferences 存储中提供了MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE 这两种操作模式,用于供给其他的应用程序访问当前应用的数据,但这两种模式原创 2016-09-15 17:31:55 · 634 阅读 · 0 评论 -
【性能分析】APP淘宝,你为什么这么慢卡?
相信很多开发者会有这种疑惑,淘宝,阿里大厂技术应该很牛逼,app性能优化应该做的很不错,为什么真正使用的时候,却感觉还是启动慢,卡呢?今天我们来探探究竟。通过这篇文章,你会了解到,反编译,性能优化相关,学会如何去分析其他的APP。本文不是黑淘宝。只是从技术方面去分析原因。一、准备工作a.三星S4 i959手机,Android 5.0.1系统,1.2GHz主频+1.6GHz主频的双四转载 2016-09-05 09:58:56 · 2975 阅读 · 0 评论