`
2277259257
  • 浏览: 520512 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android----四大组件

 
阅读更多

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开发技能大有裨益。

    Android-AutoRegister:一种更高效的组件自动注册方案(android组件化开发)

    在Android系统中,四大组件——Activity、Service、BroadcastReceiver和ContentProvider,是构建应用程序的核心元素。每个组件都需要在AndroidManifest.xml文件中进行显式注册,以便系统可以发现并管理它们。然而,...

    Android开发的四大组件

    在Android应用开发中,四大组件是构建应用程序的基础,它们分别是Activity、Service、BroadcastReceiver和ContentProvider,还有Intent作为组件间通信的重要桥梁。下面我们将逐一详细解释这些组件。 **Activity详解...

    Android-1_0-CC

    ### 一、Android应用的四大组件 - **Activities**:活动是应用程序中的一个屏幕,用户可以与其交互。它是应用程序中可见和可交互的部分。 - **Content Providers**:用于存储和检索数据的服务,支持跨应用程序共享...

    Android四大组件ppt

    Android四大组件ppt课件,内容全面,演示效果非常不错!

    android四大组件详解

    在Android系统中,四大组件是构建应用程序的核心元素,它们分别是Activity、Service、BroadcastReceiver和Content Provider。这四个组件各自承担着不同的职责,共同构成了Android应用的骨架。 **Activity**是用户与...

    Android-Service组件应用-模拟下载

    - Service是Android四大组件之一,用于在后台执行任务,不提供用户界面。 - Service有两种启动方式:通过`startService()`启动(一次性任务)和`bindService()`绑定(交互式任务)。 2. **Service生命周期**: -...

    Android发展简史-框架-四大组件-环境安装和配置-虚拟机——202100906.pdf

    Android四大组件: Android应用由四大基本组件构成:Activity、Service、BroadcastReceiver和ContentProvider。Activity是用户界面的体现,负责应用的界面显示和用户交互。Service是在后台运行长时间运行的操作,不...

    android 四大组件详细介绍

    Activity 是 Android四大组件中最复杂的,需要处理界面逻辑、事件响应、生命周期管理等多个方面。一个 Activity 占据当前的窗口,响应所有窗口事件,具备有控件、菜单等界面元素。 Service Service 服务是 Android...

    WordPress-Android-develop

    同时,理解Android的四大组件(Activity、Service、BroadcastReceiver和ContentProvider)以及布局管理(如XML布局文件)至关重要。 其次,**WordPress REST API**的使用是项目的核心。REST(Representational ...

    Android应用程序四大组件之Activity入门(Demo)

    本文将深入探讨Android应用程序四大组件之一——Activity的入门知识,并通过一个名为"HelloActivityBasic"的示例来阐述其核心概念。 首先,我们需要理解Activity的基本生命周期。Activity的生命周期包括创建...

    《android-binder-arch》pdf

    Binder是Android系统中的核心组件,它作为进程间通信(IPC)的主要方式,连接了Android系统的各个部分,包括应用程序、服务、系统服务以及硬件驱动。这本书详细阐述了Binder的工作原理、设计模式以及其实现细节,...

    Android-LearningNotes.zip

    在Android开发中,理解四大组件——Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)至关重要。Activity是用户界面的入口,Service在后台执行任务,...

    android-sunflower,一个园艺应用程序,展示了android jetpack的android开发最佳实践。.zip

    它包括四大核心组件:Architecture Components(架构组件)、UI Toolkit(用户界面工具包)、Behavior Components(行为组件)和Foundation Components(基础组件)。通过Sunflower,我们可以深入了解这些组件的实践...

    Android-阳哥面试宝典V3.0.pdf

    2. Android四大组件:Activity、Service、BroadcastReceiver、ContentProvider的深入解析。 3. 自定义View:学习绘制自定义视图,理解View的工作原理。 4. 数据持久化:使用ORM框架如GreenDao或Room进行数据库操作的...

    android-kotlin-projec-helloworldt.zip

    本项目"android-kotlin-project-helloworldt.zip"旨在提供一个基础的Android应用示例,使用了Kotlin作为主要编程语言,并结合了OkHttp、Retrofit等流行库,展示了Android四大组件的基本用法。 1. **Kotlin基础**: ...

    Android四大组件图解

    安卓四大组件的概念和用法图解

    四,android四大组件基础介绍及打电话,发短信简单应用 &单元测试

    在Android开发中,四大组件是构建应用程序的核心元素,它们分别是:Activity、Service、BroadcastReceiver以及ContentProvider。这四个组件各自承担着不同的职责,是Android系统交互的基础。 1. **Activity**: ...

    Android四大组件

    Android四大组件

Global site tag (gtag.js) - Google Analytics