Android后台操作汇总
来源:互联网 发布:锦尚数据 编辑:程序博客网 时间:2024/05/29 02:30
介绍
Android系统中,主线程即UI线程担负着直接与用户进行交互的任务,保持UI的流畅是对用户体验的最基本要求,这就要求我们不能将费时费力的工作放到主线程中,以免造成界面的卡顿。因此,在后台进行费时操作才是最佳的选择,下面介绍Android系统中进行后台操作的一些方法要点:
一.service
1.创建service
创建完成后,需要在application标签内注册此Service,可加入permission属性来确保Service只能由自己的程序启动和停止。
2.执行Service
重写OnStartCommand方法以执行由Service封装的任务。
应在onStartCommand方法中运行一个新线程在后台执行处理。
onStartCommand的返回值可以控制重新启动的行为。
3.启动和停止
当Service完成操作后,应调用stopSelf终止它。
4.将Service绑定到Activity
要让一个Service支持绑定需要实现onBind方法,并返回被绑定Service的当前实例,当被绑定时,可以通过onServiceConnected获得的serviceBinder对象来使用Service所有的共有方法和属性。
5.创建前台Service
前台Service可以有更高的优先级,可以有效地避免运行时在释放资源时终止这个Service。
当不需要在前台时可调用stopForeground,并可选择是否移除通知。
二.AsyncTask
1.使用AsyncTask运行异步任务
更新组成。
AsyncTask 适合生命周期较短且需要在UI上显示进度结果的后台操作,但在Activity被销毁时会被取消,所以生命周期较长的后台操作应使用Service组件
应重写的方法:
- doInBackground:这个方法在后台线程上执行,所以应把运行时间较长的代码放到这里,不能与UI交互。可以调用publishProgress方法传递参数给onProgressUpdate方法后台任务完成后返回的最终结果作为参数传递给onPostExecute
- onProgressUpdate:当中间进度变化时更新UI,此方法与GUI线程同步
- onPostExecute:当异步任务完成后,doInBackground方法的返回值传入这个方法,用此方法更新UI
运行方法:创建新实例并调用execute方法,可以传入很多参数(每个AsyncTask实例只能执行一次)。
2.IntentService
作用:根据需求执行一组任务,将收到的所有请求Intent放到队列中,并在异步后台线程中逐个处理他们,是Service类的子类,用来处理异步请求。
当处理完每个收到的Intent后,IntentService 会终止自己。
用法:继承IntentService并重写onHandleIntent(Intent)方法
三.手动创建线程和GUI同步的方法
1.直接创建子线程
2.可以使用runOnUiThread方法强制一个方法在UI线程中执行。
3.使用Handler
四.用Alarm实现后台操作
1.Alarm 是一种在某一时间点或一段时间间隔内激活Intent的方式。
2.Alarm 在应用程序之外操作,即使程序关闭也依然能够用来激活程序事件或操作。
3.用set方法指定一个类型,触发时间和一个要激活的PendingIntent可以创建一个只激活一次的Alarm。4.使用setRepeating 或setInexactRepeating 方法设置重复的Alarm。
5.应用:自动刷新等
- Android后台操作汇总
- Android后台操作
- MetInfo米拓后台操作修改汇总
- MetInfo米拓后台操作修改汇总
- Android adb操作命令汇总
- 【Android后台操作服务怎么实现】
- Android Studio 后台执行的定时操作
- Android 目录获取及操作汇总
- Android,Eclipse快捷键及操作技巧汇总
- Ext中Grid所有分页汇总 ——后台操作数据(PageImpl返回数据)
- 汇总操作
- Android多线程,让耗时的操作去后台运行吧
- Android多线程,让耗时的操作去后台运行吧
- Android多线程,让耗时的操作去后台运行吧
- Android中使用Handler和Thread线程执行后台操作
- Android中使用Handler和Thread线程执行后台操作
- Android多线程,让耗时的操作去后台运行吧
- Android多线程,让耗时的操作去后台运行吧
- Ubuntu编译Hadoop源码异常总结
- 使用信号量控制Linux线程同步
- python中的随机数
- SAP ABAP同时显示多个ALV的方法
- 利用预渲染加速iOS设备的图像显示
- Android后台操作汇总
- WordPress获取当前文章ID的方法
- 关于问题ld:library not found for -lXXX 和ld:warning:directory not found option 以及duplicate symbol的解决办法
- swift学习
- 关于HashCode
- 什么是面向对象思维方法
- zookeeper
- java 后台去除HTML标签
- map与set容器的使用