第四章 Android 四大应用组件

本文详细介绍了Android应用程序的四大组件:Activity、Service、ContentProvider和BroadcastReceiver。Activity是用户界面,用于与用户交互;Service是后台运行的服务,不提供用户界面;ContentProvider用于数据共享,让其他应用能访问和操作数据;BroadcastReceiver则用于接收系统或应用广播,实现全局事件监听。文章深入探讨了各个组件的启动、生命周期、使用方法和注意事项,是Android开发者必备的基础知识。
摘要由CSDN通过智能技术生成

  安卓的入门基础就是四大应用组件。分别是:Activity(活动),Service(服务),ContentProvide(内容提供者),BroadCast(广播)。一般在面试或者笔试的过程中,这些都是最基本的问题。一个应用里面会有很多个Activity,这个不同的Activity 分别具备不同的功能,指引用户进行下一步的操作。

1.Activity

1.1 Activity的介绍

   Activity 是用户与屏幕进行交互执行电话,拍照,启动应用等操作。简单来说就是用户在操作的过程中,看到的画面。

1.2 Activity的跳转和销毁

   每个Activity 都可以启动另一个Activity ,但是系统会自动在你启动另一个Activity的时候,将原有的Activity保存在栈中。栈遵循“先进后出,后进先出”的原则。当新的Activity启动的时候,旧的Activity会的推送到栈上,获取焦点。用户点击返回的时候,销毁当前的Activity,回到旧的Activity。还有一种情况,就是当你从A Activity跳转B Activity 的时候,要求你返回的时候不能返回到 A Activity ,而是返回到 A Activity 的再上一个Activity。系统这时候会提供 finish()方法,结束当前Activity。如图所示。

情况一

情况二

1.3 Activity 的创建和生命周期

  在创建Activity的时候,你就必须要了解Activity 的生命周期,了解一个Activity从创建,到结束的过程。简记: CSRPSD(创始人盘丝洞),记不住自己打自己一巴掌

生命周期图

1.4 Activity 的声明

  在上一节中,我们说到 AndroidManifest.xml 文件中,我们会指定其中的某一个Activity为“ 主Activity” ,也就是启动该App的时候,程序的入口。


  
     
     
  

这个标签必须自这个标签中。 标签是过滤器。是声明标签 android:name=”android.intent.action.MAIN” ,这就声明了 .MainActivity是主Activity,也就是程序的入口。元素指定此 Activity 应列入系统的应用启动器内(以便用户启动该 Activity)。
只有一个Activity 具备上述的操作和 “LAUNCHER”这个类别。否则会报错

1.5 Activity 的启动

假如是 MainActivity 跳转到SingleActivity
#### 1.5.1 显式启动

方式一:
    Intent intent = new Intent(MainActivity.this, SingleActivity .class);
    startActivity(intent);

方式二:
   Component component = new Component(this,SingleActivity .class);
  Intent intent = new Intent();
  intent.setComponent(component);
  startActivity(intent);

方式三:
    Intent intent = new Intent();
  intent.setclass(this,SingleActivity .class);
  startActivity(intent);

#### 1.5.2 隐式跳转

1.5.2.1 隐式跳转之Action跳转

1.在 AndroidManifest.xml文件中注册

<activity android:name=".SignInActivity";   
     <intent-filter  
         <action android:name="customer_action_here"  />
     </intent-filter>  
 </activity>  

2.在java代码中调用

//创建一个隐式的 Intent 对象:Action 动作 
    Intent intent = new Intent();
//设置 Intent 的动作为清单中指定的action  
   intent.setAction("customer_action_here");
   startActivity(intent);
1.5.2.2 隐式跳转之Category跳转

1.在 AndroidManifest.xml文件中注册

<activity android:name=".SignInActivity" >  
    <intent-filter>  
        <action android:name="customer_action_here" />  
        <category android:name="customer_category_here" />  
    </intent-filter>  
</activity>  

2.在java代码中调用

//创建一个隐式的 Intent 对象:Category 类别  
Intent intent = new Intent();  
intent.setAction("customer_action_here");  
//添加与清单中相同的自定义category  
intent.addCategory("customer_category_here");  
startActivity(intent);  
1.5.2.3 隐式跳转之Data跳转

1.在 AndroidManifest.xml文件中注册

< activity android:name=".SignInActivity">  
    < intent-filter>  
        < category android:name="android.intent.category.DEFAULT" />  
        < data  
            android:scheme="content"  
            android:host="com.example.intentdemo"  
            android:port="8080"  
            android:pathPattern=".*pdf"  
            android:mimeType="text/plain"/>  
    < /intent-filter>  
< /activity> 

2.在java代码中调用

//创建一个隐式的 Intent 对象,方法四:Date 数据  
Intent intent = new Intent();  
Uri uri = Uri.parse("content://com.example.intentdemo:8080/abc.pdf");  
intent.setDataAndType(uri, "text/plain");  
startActivity(intent);  
1.5.2.4 拓展 隐式跳转之浏览网页
Uri  uri=new Uri ("www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);  
startActivity(intent); 
1.5.2.5 拓展 隐式跳转之调用地图</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值