执笔giao天涯
Activity的生命周期
-
在Android系统中,用户与程序的交互是通过Activity完成的。Activity是Android应用程序的四大组件之一,它负责管理Android应用程序的界面。一个应用程序一般会包含若干个Activity,每一个Activity组件负责一个界面的展现。
-
程序中的每个对象都有自己的生命周期,也就是从创建到销毁的过程。Activity也具有自己的生命周期,Activity的生命周期中分为五种状态,分别是启动状态、运行状态、暂停状态和停止状态、销毁状态。
1、运行状态:当Activity在屏幕的最前端时,它是可见的、有焦点的。
2、暂停状态:在某些情况下,Activity对用户来说仍然是可见的,但它不再拥有焦点,即用户对它的操作是没有实际意义的。
3、停止状态:当Activity完全不可见时,它就处于停止状态,但仍然保留着当前状态和成员信息。然而这些对用户来说都是不可见的。
-
Activity从一种状态转变到另一种状态时会触发一些事件,执行一些回调方法来通知状态的变化,具体方法如下所示:
void onCreate(Bundle savedInstanceState):创建时执行
void onStart():可见时执行
void onRestart():回到前台,再次可见时执行
void onResume():获取焦点时执行
void onPause():失去焦点时执行
void onStop():用户不可见进入后台时执行
void onDestroy():销毁时执行
Activity的创建、配置、开启和关闭
Activity的创建可以通过两种方式:
1、使用菜单命令【New】a【Activity】a【Empty Activity】
2、自己写一个继承自AppCompatActivity的类。(一个Activity对应一个布局,再需要创建一个layout,在layout中添加)
//将Activity和布局文件绑定
xmlns:tools="http://schemas.android.com/tools"
tools:context=".Activity的名称"
Activity开启和关闭
开启Activity:startActivity()
在MainActivity的onCreate()方法中启动
SecondActivityIntent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
关闭Activity:finish();
Intent与IntentFilter
-
Intent被称为意图,是程序中各组件进行交互的一种重要方式,他不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。
-
一般用于启动Activity、Service以及发送广播等。根据开启目标组件的方式不同,Intent被分为两种类型显示意图和隐式意图。
-
显式意图可以直接通过名称开启指定的目标组件
-
隐式意图通过指定action和category等属性,系统根据这些信息进行分析后寻找目标Activity
显示意图:(精准匹配)
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
隐式意图:(模糊匹配即让系统自己筛选符合条件的目标)
使用隐式意图的时候要配合intent-filter即隐式过滤器来使用 ,intent-filter里面需要指定的数据一般有三个(action、data、category)
action:表示intent对象要完成的动作是什么,是一个字符串。
data:是对action的一个补充,是一个路径,通常是一个uri
category:是一个类别表示对action添加的额外信息。
-
当发送一个隐式Intent后,Android系统会将他与程序中的每一个组件的过滤器进行匹配,匹配属性有 action、data、category,需要这三个属性都匹配成功才能唤起相应的组件。
//在project1中的activity启动project2:
//1、在project2的清单文件中添加intent-filter。
<activity android:name="cn.haue.Activity02">
<intent-filter>
<action android:name="cn.haue.START_ACTIVITY"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
//2、在project1的mainactivity中书写一下代码
Intent intent = new Intent();//创建intent
intent.setAction("cn.haue.START_ACTIVITY");//设置动作,一定要和意图过滤器中的名字一样
startActivity(intent); //开启页面
动态申请权限实例(简单浅层次)