
Android
文章平均质量分 88
zh175578809
这个作者很懒,什么都没留下…
展开
-
响应式编程--Android Rxjava的使用(一)
RxJava作为一个响应式编程库,在Android开发者中非常的受欢迎,越来越多的人开始接触并使用,作为一个Android开发的菜鸟,仔细研究了一下RxJava的知识,在此将一些学习的过程和心得记录一下首先介绍一下RxJava相关的概念ReactiveXReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。RxJavaR原创 2017-07-23 11:23:31 · 753 阅读 · 0 评论 -
UI线程和非UI线程的交互方式
Android的UI线程负责处理用户的按键事件、触摸事件及屏幕绘制等,在UI线程中不可以有耗时操作阻塞事件的响应,这样会导致界面变得不流畅,甚至会出现没有响应的情况,这就是所谓的ANR(Application Not Responding)。一般应该把像读写文件、请求网络这类的耗时操作放在子线程中去执行,这样可以避免UI线程的响应事件过慢,但是很多情况下在子线程中需要更新界面,比如从网络中获取到图片原创 2017-06-11 19:37:17 · 1397 阅读 · 0 评论 -
Android多线程之AsyncTask
AsyncTask是一种轻量级的异步任务类,不需要借助线程Handler就可以实现,它是在线程池中执行任务,然后把执行的进度和返回结果传递给主线程,在主线程中更新UIAsyncTask是一个抽象类,定义了3个泛型参数:Param:启动任务时需要传入的参数类型Progress:后台任务完成进度的参数类型Result:任务执行完毕后返回的结果类型使用AsyncTask的方法如下:1、定义Asyn原创 2017-06-11 16:40:49 · 671 阅读 · 0 评论 -
Activity和Service的交互方式
在开发过程中,经常会遇到Activity和Service进行相互通信、交换数据的需要,最常见的比如音乐播放器,使用Service在后台进行音乐播放,前台使用Activity显示界面,点击前台控件后需要告知Service,控制音乐的播放、暂停、切换下一首等,后台Service再将数据传给Activity来改变界面显示Activity和Service的交互方式主要有以下几种通过广播进行交互通过共享文原创 2017-06-04 02:31:45 · 11399 阅读 · 0 评论 -
Android中内存泄漏的发生原因及优化
在Android开发中,当一个对象已经不需要再使用了,本该被回收时,而另一个正在使用的对象持有它的引用,从而导致它不能被回收,占用的内存没有被释放,这样就会产生内存泄漏。内存泄漏是一个很容易发生的问题,而且也不像程序ANR和Crash那样容易定位。内存泄漏问题对一个开发人员的经验和开发技能有较高的要求,这也是开发人员最容易犯的错误之一。内存泄漏的优化主要包括两个方面。一是避免在开发过程中写出可能会发原创 2017-06-18 02:22:49 · 676 阅读 · 0 评论 -
创建线程的另一种方法-使用Android线程池
在开发过程中,经常会使用到线程,一般使用Thread或Runnable来创建一个线程,使用这种方式创建的线程并不能被重复利用。当应用程序中创建的线程对象太多时,随之而来的是由于创建和销毁线程所带来的性能开销,多线程的并发也会因互相抢占系统资源而导致程序阻塞。使用线程池可以避免这些问题,总的来说,线程池有以下几点好处1、重用线程池中的线程,避免因为线程创建和销毁带来的性能开销 2、有效的控制线程的最原创 2017-06-15 22:35:28 · 636 阅读 · 0 评论 -
Activity的创建与销毁、数据的保存和启动模式分析
一直对Activity的各种生命周期方法、创建和销毁时机以及Activity的4种启动模式没有彻底的了解清楚,详细整理记录一下这些知识,以后哪再不清楚时不会再到处查阅资料了。首先,从网上拷过来一张图片,对这张图片,相信很多人都非常熟悉,它包括了Activity从创建到销毁的全部过程,如下图所示:1、Activity的创建与销毁从Activity的创建开始说起,当启动一个Activity时,生命周期原创 2017-05-15 22:39:11 · 1622 阅读 · 0 评论 -
使用startForeground()创建前台Service
Service默认是运行在后台的,意味着系统如果需要回收内存的话,就可能会杀掉后台的服务,如果某个Service被杀掉对用户具有很大影响的话,可以把Service设置成前台的,这样的Service优先级会比较高,被杀掉的概率也会很低。比如正在后台播放音乐的Service,如果被杀掉,音乐会停止播放,这样用户就会注意到。所以可以看到许多音乐播放器在后台运行的时候,会在下拉的通知栏上有正在运行的通知显示原创 2017-06-04 17:40:14 · 15989 阅读 · 1 评论 -
IntentService执行耗时任务及源码解析
IntentService是一种特殊的Service,它继承了Service,是一个抽象类。普通的Service与它所在的应用处于同一个进程,Service也不是一条新的线程,所以不可以在Service中直接处理耗时的任务。IntentService使用单独的线程来处理任务,可以用来处理耗时任务,任务执行后会自动停止。而且由于是服务的原因,所以比单独的线程优先级高,不容易被杀死。IntentServ原创 2017-05-29 19:14:21 · 873 阅读 · 0 评论 -
ListView的两种多选模式
在上篇博客中,详细记录了ListView的各种用法,本篇博客主要用于探究ListView的两种多选模式。在上篇博客的结尾,说到在多选模式中,ListView选中的列表项都保存在一个SparseBooleanArray中,利用ListView的列表是否被选中的状态,可以突出显示被选中的项,比如给选中的列表项设置背景色布局文件依然是只有一个ListView<RelativeLayout xmlns:an原创 2017-05-29 15:50:56 · 9424 阅读 · 0 评论 -
ListView控件功能全解析
ListView是Android手机系统中使用非常频繁的控件,以垂直列表的形式显示数据项,ListView的用法也较为复杂,下面将详细介绍ListView相关的各种用法。1、创建使用ListView有2种方式创建ListView在布局文件中使用ListView创建<ListView android:id="@+id/list" android:layout_wi原创 2017-05-29 00:28:20 · 4228 阅读 · 0 评论 -
AIDL Service实现跨进程通信
AIDL Service用于在不同进程间进行数据交换,即所谓的跨进程通信(interprocess communication,简称IPC)与绑定本地Service不同的是,本地Service的onBind()方法会直接把IBinder对象本身传给客户端的ServiceConnection的onServiceConnected()方法的第二个参数。但远程Service的onBind()方法只是将IB原创 2017-05-14 01:36:54 · 2615 阅读 · 0 评论 -
使用Universal-Image-Loader框架加载图片
使用Universal-Image-Loader框架加载图片Github下载地址:http://github.com/nostra13/Android-Universal-Image-Loader下载后,新建工程,将jar导入到工程的libs目录中。加载网络图片1、初始化ImageLoader新建类继承Application,在Application的onCreate()方法中初始化ImageLoa原创 2017-03-25 19:08:30 · 688 阅读 · 0 评论 -
Android应用层View绘制流程与源码分析
转自https://blog.youkuaiyun.com/yanbober/article/details/461283791 背景还记得前面《Android应用setContentView与LayoutInflater加载解析机制源码分析》这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系:看见没有,如上图中id为content的内容就是整个...转载 2018-12-17 14:45:07 · 537 阅读 · 0 评论