1、为什么不用Activity、BroadcastReceiver处理耗时操作?
主线程 (“事件处理线程” / “UI线程”) 在5秒内没有响应输入事件, BroadcastReceiver 没有在10秒内完成返回的情况下,Android会出现ANR错误。
2、为什么不直接抛出Thread进行处理而要采用Service?
3、使用方式:
Service启动时,注册BroadcastReceiver ,同时启动处理线程;
Service中定义BroadcastReceiver 内部类,用于接收数据;
BroadcastReceiver 中调用处理线程的handler,通过handler.sendMessage();
由Handler完成数据的最终处理;
其中,
Service提供处理环境或者说容器;
BroadcastReceiver 用于接收外部传送至Service的数据,并调用handler;
Thread(Handler)真正完成数据的处理;
public class MyService extends Service{ private MyThread myThread; oncreate(){ //启动处理线程 myThead.start(); //注册监听 registerReceiver(); } onDestroy(){ myThread.release(); unregisterReceiver(); } public class MyReceiver extends BroadcastReceiver { onReceive(){ // myThread.handler.sendMessage(); } } }
public class MyThread extends Thread { private Looper looper; private MyHandler myHandler; run(){ Looper.prepare(); looper = Looper.myLooper(); myHandler = new MyHandler(looper); looper.loop(); } realease(){ loop.quit(); } }
相关推荐
Service是Android系统中的一种组件...综上所述,Service和BroadcastReceiver在Android开发中扮演着重要角色,理解它们的生命周期、启动方式、交互机制以及如何优化其性能是面试中常见的问题,也是开发者必备的知识点。
本篇文章将详细讲解如何在Android中创建一个常驻Service,并结合BroadcastReceiver实现线程间(Service Thread与Activity)的异步通信。 一、创建Service 1. 定义Service类:首先,我们需要创建一个继承自`Service...
【Android笔试题与面试知识点详解】 在Android开发者领域,面试和笔试是评估候选人技术能力的重要环节。本资料“android-笔试题-答案(面试使用)”包含了一份针对Android开发者的笔试题目集,以及相应的解答,旨在...
源码集合可能包含使用AsyncTask、Handler、Thread、Service等实现后台任务的例子,帮助我们理解如何优雅地进行异步处理。 2. **网络编程**:Android应用经常需要与服务器交互,例如使用HttpURLConnection、OkHttp或...
1. **Android应用程序结构**:Android程序通常由多个组件(Activity、Service、BroadcastReceiver、ContentProvider)构成,每个组件都有其特定的功能和生命周期。源码中会包含这些组件的实现,了解它们的工作原理是...
综上所述,"android service下载资源,同时解压资源"这一功能实现涉及到了Android Service、异步下载、BroadcastReceiver、ZIP文件解压等多个技术点,这些知识点在实际的Android应用开发中都非常常见且重要。...
Android应用程序框架包含了一系列的API,如Activity、Service、BroadcastReceiver、ContentProvider等。豆瓣移动客户端通过这些组件进行交互,实现用户界面、后台服务、数据通信等功能。理解这些组件的工作原理,...
源码分析和研究将揭示其在Android平台上的开发技术和实践。 1. **Android Studio项目结构**: - Android应用程序的源代码通常按照特定的项目结构组织,包括`app`模块、`gradle`配置文件、资源文件夹(如`res`)和`...
1. **组件系统**:Android应用由四大组件构成:Activity、Service、BroadcastReceiver和ContentProvider。理解它们各自的角色和交互方式是成为Android开发高手的基础。 2. **多线程与异步处理**:由于Android UI...
该资源包中的"android-exercises-master"很可能包含了多个子目录和文件,这些内容可能涵盖以下几个主要知识点: 1. **Activity与Intent**:Activity是Android应用的基本组件,代表用户界面的一个屏幕。Intent用于...
本“Android开发教程--经典”覆盖了Android开发的各个方面,结合实践案例,确保你能够深入理解并掌握这些知识点。无论你是新手还是希望进阶的开发者,这份教程都将对你的Android开发事业大有裨益。
android中定时有很多种是实现,常见的Handler 与Thread的结合,handler.postDelayed ,以及要使用的AlarmManger 等都可以实现定时任务的执行,但是使用场景却大不相同,这里主要是怎么用AlarmManager实现定时任务。...
在Android开发中,更新应用程序是一项常见的任务,它涉及到服务(Service)组件的使用以及网络下载技术。本项目是一个针对学生毕业设计的学习资源,提供了一个基于Android的app更新示例,让我们一起深入探讨其中的...
本资源包含了该书11至19章的源码,这些章节涵盖了Android开发中的许多关键知识点,旨在帮助读者深入理解并实践Android应用开发。 1. **Chapter 11: 自定义View** - 自定义View是Android开发中的一项高级技术,让...
1. **基础概念**:了解Android系统架构、组件模型(Activity、Service、BroadcastReceiver、ContentProvider)、Intent机制等。 2. **UI设计**:使用XML布局文件创建用户界面,包括LinearLayout、RelativeLayout、...
可以使用AsyncTask或者Thread结合Handler更新UI,或者使用ProgressRequestBody这类支持进度回调的网络库。 6. **权限管理**: - 自Android 6.0(API level 23)起,运行时权限开始生效,应用程序需要在运行时请求...
《李兴华Android开发实战经典》是一本深受开发者欢迎的Android技术书籍,其配套的PPT课件提供了丰富的教学资源,旨在帮助读者深入理解和掌握Android应用开发的核心技能。李兴华老师是Android开发领域的知名专家,他...
1. AIDL(Android Interface Definition Language):如果需要在应用退出后使Service持续运行,可以使用AIDL实现进程间通信(IPC),这样即使应用被关闭,Service所在的进程仍然可以运行。 2. 后台任务:使用...
11. **多线程与异步处理**:讲解Android中的线程模型,使用AsyncTask、Handler、Thread和Runnable进行后台任务处理。 12. **网络编程**:介绍网络请求的基础知识,包括HTTP协议、URLConnection和OkHttp库的使用,...
5. **Service组件**: 为了在后台持续播放音乐,即使用户离开应用,需要使用Service。服务可以独立于用户的交互运行,确保音乐播放不会中断。 6. **ContentProvider**: 如果音乐文件存储在设备的外部存储上,可能...