Android四大组件:Activity、Service、Broadcast Receiver、Content Provider
Activity
是Android程序与用户交互的窗口,从视觉效果来看,一个Activity占据当前的窗口, 响应所有窗口事件,具备有控件,菜单等界面元素。从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生 命周期,和一些转跳逻辑。
onCreate()函数:
先调用超类的onCreate();然后通过setContentView()为活动Activity加载布局文件;
通过布局文件中的GridView组件id获取该组件;再调用setListAdapter(ListAdapter)函数填充它(填充数据)
Service
就是剥离了界面的Activity,它们在很多Android的概念方面比较接近,都是封装一个 完整的功能逻辑,通常都是后台长时间运行,接受上层指令,完成相关事务的模块。定义好需要接受的Intent,提供同步或异步的接口,在上层绑定了它后, 通过这些接口(很多时候都是RPC的...)进行通信。
Broadcast Receiver
接收一种或者多种Intent跳转做触发事件,接受相关消息,做一些简单的处理,转换成一条Notification,统一了Android的事件广播模式。
Content Provider
提供第三方应用数据的访问方案。可以派生ContentProvider类,对外提供数据,像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化了上层应用,对数据的整合提供了更方便的途径。
Handler待解:扮演联系Activity和Thread的桥梁
搞清楚启动顺序、Activity加载顺序
Android程序提供了Invalidate方法实现界面刷新,但是invalidate不能直接在线程中调用(因为违背单线程模型)必须在UI线程中调用且Android UI操作也不是线程安全的,所以Android程序中可以使用的界面刷新方法有两种:Handler和利用postInvalidate()来实现在线程中刷新界面
Handler刷新界面: //在onCreate()中开启线程(在线程run方法中执行业务逻辑,执行完毕调用 Handler.sendMessage()发送Message实例) new Thread(new GameThread()).start(); //实例化一个handler(接收消息Message实例,处理,调用该界面文件View对象的方法 invalidate()刷新界面) Handler myHandler = new Handler( public void handleMessage(Message msg){ switch(msg.what){ case Activity01.REFRESH : mGameView.invalidate(); break; } super.handleMessage(msg); } ); class GameThread implements Runnable{ public void run(){ while(!Thread.currentThread().isInterrupted()){ Message message = new Message(); message.what = Activity01.RERESH; //发送消息 Activity01.this.myHandler.sendMessage(message); try{ Thread.sleep(100); }catch (InterruptedException e){ Thread.currentThread().interrupt(); } } } }
postInvalidate()刷新界面: 使用postInvalidate()则比较简单,不需要handler,直接在线程中调用postInvalidate即可 class GameThread implements Runnable{ public void run(){ while(!Thread.currentThread().isInterrupted()){ try{ Thread.sleep(100); }catch(InterruptedException e){ Thread.currentThread().interrupt(); } //使用postInvalidate可以直接在线程中更新界面 mGameView.postInvalidate(); } } }
一个程序默认情况下只有一个Process,但是一个Process下可以有多个Thread。在这么多Thread中,有一个Thread我们称之为UI Thread。它在程序运行的时候就被创建,是一个Porcess当中的主线程Main Thread,主要负责控制UI界面的显示、更新、控制交互。在Android程序创建之初,一个Process呈现的是单线程模型,所有的任务都在一个线程中运行。因此,我们认为UI Thread所执行的每一个函数所花费的数据都应该是越短越好,而其他费时工作(访问网络、下载、查询数据库)都应该交给子程序去执行,以免阻塞主程序。
那么UI Thread如何和其他Thread一起工作呢?常用方法是:
创建一个主线程的Handler对象,当做Listener去让子线程能将讯息Push到主线程的Message Quene里,以便触发主线程的handlerMessage()函数,让主线程知道子线程的状态,并在主线程更新UI
Activity组件:
1、每一个屏幕都将作为一个Activity(每个activity作为一个独立的类来实现,均继承Activity基类)
2、切换屏幕是通过打开一个新的activity来实现
一些实例中,一个activity会将返回值返回给前一个activity(如调用startActivityForResult方法)
3、当一个新屏幕打开,前一个屏幕将暂停并保存在历史堆栈中,用户可以在历史堆栈中回退、删除屏幕
Intent组件:
1、通过Intent来切换屏幕(即跳转Activity)
2、通过Intent来传递数据
1)数据可直接放在Intent中传递
2)先放到map型Bundle对象然后再放到Intent对象中传递
3)数据还可放在包共享SharedPreferences对象中供包内的Activity共享
Service:
和Activity差不多,没有用户界面,但是不能自己运行需要通过一个Activity或者其他Context对
象调用,Context.startService()和Context.bindService()
Content Provider:
共享数据(文件、SQLite数据库、网络、等)
一、根据用途构建不同类型的Intent组件:
Intent intent = new Intent(Intent.ACTION_SEARCH);
Intent intent = new Intent(Main.this,DialogActivity.class);
Intent intent = new Intent();
intent.setClass(Main.this,DialogActivity.class);
二、Intent组件对象中存放Map型数据或对Intent对象操作:
intent.putExtra(name, value);//intent中直接放数据
intent.getAction();
三、当前Activity执行Intent:(前提:intent.resolveActivity(getPackageManager()) != null)
startActivity(intent);
或者
startActivityForResult(intent, requestCode)
requestCode--接收该intent的目标view的R.java中的id
相关推荐
在"Android四大组件简述"这个项目中,你可以找到关于这些组件的示例代码和实践应用,通过学习和调试这些示例,可以更深入地理解四大组件的工作原理和使用方式。这将对提升你的Android开发技能大有裨益。
在Android系统中,四大组件——Activity、Service、BroadcastReceiver和ContentProvider,是构建应用程序的核心元素。每个组件都需要在AndroidManifest.xml文件中进行显式注册,以便系统可以发现并管理它们。然而,...
在Android应用开发中,四大组件是构建应用程序的基础,它们分别是Activity、Service、BroadcastReceiver和ContentProvider,还有Intent作为组件间通信的重要桥梁。下面我们将逐一详细解释这些组件。 **Activity详解...
### 一、Android应用的四大组件 - **Activities**:活动是应用程序中的一个屏幕,用户可以与其交互。它是应用程序中可见和可交互的部分。 - **Content Providers**:用于存储和检索数据的服务,支持跨应用程序共享...
Android四大组件ppt课件,内容全面,演示效果非常不错!
在Android系统中,四大组件是构建应用程序的核心元素,它们分别是Activity、Service、BroadcastReceiver和Content Provider。这四个组件各自承担着不同的职责,共同构成了Android应用的骨架。 **Activity**是用户与...
- Service是Android四大组件之一,用于在后台执行任务,不提供用户界面。 - Service有两种启动方式:通过`startService()`启动(一次性任务)和`bindService()`绑定(交互式任务)。 2. **Service生命周期**: -...
Android四大组件: Android应用由四大基本组件构成:Activity、Service、BroadcastReceiver和ContentProvider。Activity是用户界面的体现,负责应用的界面显示和用户交互。Service是在后台运行长时间运行的操作,不...
Activity 是 Android四大组件中最复杂的,需要处理界面逻辑、事件响应、生命周期管理等多个方面。一个 Activity 占据当前的窗口,响应所有窗口事件,具备有控件、菜单等界面元素。 Service Service 服务是 Android...
同时,理解Android的四大组件(Activity、Service、BroadcastReceiver和ContentProvider)以及布局管理(如XML布局文件)至关重要。 其次,**WordPress REST API**的使用是项目的核心。REST(Representational ...
本文将深入探讨Android应用程序四大组件之一——Activity的入门知识,并通过一个名为"HelloActivityBasic"的示例来阐述其核心概念。 首先,我们需要理解Activity的基本生命周期。Activity的生命周期包括创建...
Binder是Android系统中的核心组件,它作为进程间通信(IPC)的主要方式,连接了Android系统的各个部分,包括应用程序、服务、系统服务以及硬件驱动。这本书详细阐述了Binder的工作原理、设计模式以及其实现细节,...
在Android开发中,理解四大组件——Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)至关重要。Activity是用户界面的入口,Service在后台执行任务,...
它包括四大核心组件:Architecture Components(架构组件)、UI Toolkit(用户界面工具包)、Behavior Components(行为组件)和Foundation Components(基础组件)。通过Sunflower,我们可以深入了解这些组件的实践...
2. Android四大组件:Activity、Service、BroadcastReceiver、ContentProvider的深入解析。 3. 自定义View:学习绘制自定义视图,理解View的工作原理。 4. 数据持久化:使用ORM框架如GreenDao或Room进行数据库操作的...
本项目"android-kotlin-project-helloworldt.zip"旨在提供一个基础的Android应用示例,使用了Kotlin作为主要编程语言,并结合了OkHttp、Retrofit等流行库,展示了Android四大组件的基本用法。 1. **Kotlin基础**: ...
安卓四大组件的概念和用法图解
在Android开发中,四大组件是构建应用程序的核心元素,它们分别是:Activity、Service、BroadcastReceiver以及ContentProvider。这四个组件各自承担着不同的职责,是Android系统交互的基础。 1. **Activity**: ...
Android四大组件