Android
NickolasNi
这个作者很懒,什么都没留下…
展开
-
Android - SQLite 数据库
创建数据库SQLiteOpenHelper 是一个抽象类,这意味着如果我们想要使用它的话, 就需要创建一个自己的帮助类去继承它。SQLiteOpenHelper 中有两个抽象方法,分别是 onCreate()和 onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两 个方法中去实现创建、升级数据库的逻辑。SQLiteOpenHelper 中还有两个非常重要的实例方法,get转载 2017-03-27 15:10:11 · 316 阅读 · 0 评论 -
Json 在 Android中的应用
JSON格式简单,兼容性高,易于读写,并且传输的带宽小,方便解析,并且服务端容易生成。比起 XML,JSON 的主要优势在于它的体积更小,在网络上传输的时 候可以更省流量。但缺点在于,它的语义性较差,看起来不如 XML 直观。类似地,解析 JSON 数据也有很多种方法,可以使用官方提供的 JSONObject,也可以使 用谷歌的开源库 GSON。另外,一些第三方的开源库如 Jackson、FastJ原创 2017-03-16 14:55:24 · 597 阅读 · 0 评论 -
JNI for Android, Android Studio NDK 入门 实例 demo
Jni是java用来和其他语言交互的一套规范,有了它java可以调用动态链接库中的方法,或者让其他语言掉用java方法。具体介绍和Demo可以浏览这篇博客。基础NDKNative Development Kit(NDK)是一系列工具的集合。它提供了一系列的工具,帮助开发者快速开发C/C++的动态库,并能自动将so和Java一起打包成apk。JNI与NDK的关系NDK可以为我们生成了C/C++的动态链原创 2017-05-24 12:08:14 · 409 阅读 · 0 评论 -
Android中Xml解析实战
在Android中,常见的XML解析器分别为DOM解析器、SAX解析器和PULL解析器,下面,我将一一向大家详细介绍。DOM解析器:DOM是基于树形结构的的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树、检索所需数据。分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息。Android完全支持DOM 解析。利用DOM中的对象,可以对XML文档进行读取、搜索、修转载 2017-05-15 14:00:37 · 289 阅读 · 0 评论 -
Fragment 1
Fragment 简介Google最初引入Fragment主要是为了给大屏幕(如平板电脑)上更加动态和灵活的 UI 设计提供支持。作为 Activity 界面的一部分,Fragment 的存在必须依附于 Activity,并且与 Activity 一样,拥有自己的生命周期,同时处理用户的交互动作。同一个 Activity 可以有一个或多个 Fragment 作为界面内容,并且可以动态添加、删除 Fr原创 2017-03-13 16:54:29 · 508 阅读 · 0 评论 -
Android 常见的几种内存泄漏 - Timer
TimerTask对象在和Timer的schedule()方法配合使用的时候极容易造成内存泄露。和Handler一样,Timer和TimerTask一直引用外部类Activity。比Handler更严重的是Timer一般是用来做无限循环,而消息队列终有把消息都处理完的时候。一般Timer的代码如下:void scheduleTimer() { new Timer().schedule(new原创 2017-06-09 15:36:18 · 8538 阅读 · 0 评论 -
Activity - 2 传递数据
使用Intent传递数据Intent传递基本数据类型向后一个Activity传递数据向前一个Activity返回数据Intent传递对象使用全局变量传递数据使用Intent传递数据在启动活动时传递数据的思路很简单,Intent 中提供了一系列 putExtra()方法的重载,可 以把我们想要传递的数据暂存在 Intent 中,启动了另一个活动后,只需要把这些数据再从 Intent 中取出就原创 2017-03-10 17:23:49 · 385 阅读 · 0 评论 -
Fragment 2
在Fragment1中虽然介绍了Fragment生命周期会执行到的各个override方法,但没有介绍在动态操作时FragmentTransaction对于fragment生命周期的影响。这篇文章讲介绍这一块内容。 FragmentTransaction的几个核心方法除了replace都是成对出现。Add/Removeadd 方法把一个fragment添加到一个Fragment管理容器里。当Fra原创 2017-05-26 15:02:19 · 342 阅读 · 0 评论 -
Android 常见的几种内存泄漏 - Handler
Handler的使用造成的内存泄漏问题应该说最为常见了,平时在处理网络任务或者封装一些请求回调等api都应该会借助Handler来处理,对于Handler的使用代码编写一不规范即有可能造成内存泄漏,如下示例:public class MainActivity extends AppCompatActivity { private Handler mHandler = new Handler(原创 2017-06-09 13:18:03 · 406 阅读 · 0 评论 -
Android - DownloadManager
DownloadManger是android 2.3(api level 9)开始 提供的用于优化处理长时间的下载操作。DownloadManager 处理Http/Https连接并监控连接中的状态变化及系统重启来确保每一个下载任务顺利完成。大多数涉及到下载的情况中使用DownloadManager都是很好的选择,尤其是后台继续下载,下载状态回调,断点续传,下载环境设置,下载文件的操作等方面,支持的原创 2017-04-01 11:46:56 · 373 阅读 · 0 评论 -
android 网络编程 - HttpURLConnection与HttpClient
安卓和Java应用开发少不了要提交HTTP请求,而基本上目前有两个实现方式:HttpUrlConnection(即URL.openConnection)和HttpClient。 HttpClient是apache的开源实现,而HttpUrlConnection是安卓标准实现。1. HttpURLConnectionAndroid 2.2版本之前,HttpURLConnection一直存在着一些令人厌原创 2017-03-15 17:05:58 · 471 阅读 · 0 评论 -
Android 多线程 - 异步消息处理机制
在Android当中,提供了异步消息处理机制的两种方式来解决线程之间的通信问题,一种是Handler的机制,还有一种就是 AsyncTask 机制。HandlerAndroid UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃。相信大家在日常的工作当中都会经常遇到这个问题,解决的方案应该也是早已烂熟于心,即创建一个Message对象,然后借助Handler发送出去,之后在Han原创 2017-03-20 15:37:20 · 553 阅读 · 0 评论 -
Android -- 在线播放歌曲 1 -- 搜索歌曲
这是一个搜索歌曲,下载歌曲,播放歌曲的小程序。是项目中的一个子功能模块。程序非常简单只有一个界面,功能简单明了在搜索栏中输入想搜的信息,点击搜索按钮下方ListView便列出搜索结果。中间一排歌曲按钮,可以前后选择歌曲,播放暂停歌曲。搜索歌曲搜索歌曲为网络操作相对耗时,这里当用户点击搜索时显示一个搜索进度框,并新建一个新线程开始调用搜索歌曲助手类。在调用搜索歌曲助手类的同时传入一个回调函数,当搜索歌原创 2017-04-07 15:18:27 · 1338 阅读 · 0 评论 -
Android -- 在线播放歌曲 2 -- 下载歌曲
下载歌曲分两部分,一部分是保存到数据库中(用于显示播放历史记录),一部分是下载到手机中。 当用户点击歌曲时首先会判断歌曲是否在数据库中,如果在数据中表示之前播放过此歌即下载过此歌那么就会播放本地歌曲;如果在数据库中没有该歌曲则在线播放歌曲同时把歌曲保存到数据库中同时下载到本地。考虑到手机容量限制,最多保存50首歌曲。所以在保存歌曲前会先去数据库和本地删除第51首歌曲(如果有51首的话)。保存歌曲到原创 2017-04-07 16:40:22 · 531 阅读 · 0 评论 -
Android -- 在线播放歌曲 3 -- 操作歌曲
播放歌曲这种后台操作放到了Service中。由于用户会播放不同歌曲,每次播放不同歌曲会传递不同的歌曲地址,如果用StartService需要每次都在Intent上绑定不同的值 而且会不断的去StartService,所以采用了BindService来绑定服务。只需要一次绑定后获得自定义Service中定义的bind对象就能方便的操作Service中的定义的方法从而操作歌曲。歌曲服务类代码如下:pub原创 2017-04-07 17:27:06 · 411 阅读 · 0 评论 -
Android - ListView
ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView。ListView用于显示大量相同格式数据。常用方法: setAdapter() 设置数据适配器 setOnItemClickListener() 设置每项点击事件监听 Adapter数据适配器 将各种数据以合适的原创 2017-03-28 17:34:26 · 422 阅读 · 0 评论 -
Activity - 3 生命周期
Android 是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动 的集合,这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构,在默认情况 下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。而每当我们 按下 Back 键或调用 finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入 栈的活动就会重新处于栈顶的位置。系统总是转载 2017-03-13 13:17:08 · 614 阅读 · 0 评论 -
Android 停止线程
线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start,只能新建一个线程对象。但有时run方法是永远不会结束的。例如在程序中使用线程进行Socket监听请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。当需要结束线程时,如何退出线程呢?有三种方法可以结束线程:使用退出标志,使线程正常退出,转载 2017-03-23 11:08:34 · 321 阅读 · 0 评论 -
Android - 仿iPhone调节音量/亮度
项目需要用到调节音量及亮度,效果类似iPhone。需求点击增加音量键后现实音量界面并增加下方小格子,用户不再点击调节音量后音量界面会在4s后消失。 整个功能用Service实现,在Service中创建亮度调节界面(通过WindowManager)。在主线程中提供两个按钮来绑定服务,当服务已经绑定时直接调用Bind对象的setLight方法来设置亮度。实现调节亮度界面的Service重写了onC原创 2017-03-23 13:50:28 · 3001 阅读 · 0 评论 -
Activity - 1 启动
Intent显式 IntentIntentIntent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent 一般可被用于启动活动、启动服务、以及发送广播等场景。 Intent 的用法大致可以分为两种,显式 Intent 和隐式 Intent,我们先来看一下显式 Intent 如何使用。显式 IntentInten原创 2017-03-10 13:39:10 · 3349 阅读 · 0 评论