安卓的入门基础就是四大应用组件。分别是: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);