首页 > 代码库 > 8-25 Android学习笔记

8-25 Android学习笔记

1.Intent激活 新的activity

激活组件,附带数据

设置要激活的组件 显式Intent

1>intent.setClass(this,OtherActivity.class)

2>intent.setClassName(this,"packagename.OtherActivity")

3>intent.setComponent(new ComponentName(this,OtherActivity.class))

4>Intent intent = new Intent(this,OtherActivity.class)

两个activity之间传递参数

1>intent传递参数,新activity getIntent()

2>bundle对象传递参数

2.activity的启动模式LaunchMode

1>standard

这是默认模式,每次激活activity时,每次都会创建activity实例,并且放入任务栈中

2>singleTop

如果在任务的栈顶正好存在该Activity的实例,就重用该实例(调用实例的onNewIntent()),否则就会创建新的实例,并且放入栈顶(ps:及时栈中存在该activity的实例,只要不在栈顶,就会创建实例)

3>singleTask

如果在栈中已经有该activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移出栈。如果栈中不存在该实例,将会创建新的实例放入栈中

4>singleInstance

在一个新栈中创建该Activity的实例,并且让多个应用共享该栈中的Activity实例。一旦该模式的Activity的实例已经存在于某个栈中,任何再激活该Activity时都会重用该栈中的实例(会调用实例的onNewIntent()),其效果相当于多个应用共享一个应用,不管谁激活该Activity都会进入同一个应用中。

3.Intent

Android基本的设计理念是鼓励减少组件之间的耦合,因此Android提供了Intent(意图),Intent提供了一种通用的消息系统,它允许在你的应用程序与其它应用程序之间传递Intent来执行动作和产生事件。使用Intent可以激活Android应用三种类型的核心组件:活动、服务和广播接收者

Intent可以划分为显示意图和隐式意图

显式意图:调用Intent.setComponent()或者intent.setClassName()或者intent.serclass()方法指定了组件名的Intent为显式意图,显式意图明确指定了要激活的组件是哪个组件

隐式意图:没有明确指定组件名的Intent为隐式意图。Android系统会根据隐式意图中设置的动作(action)类别(category)数据(URL和数据类型)找到最适合的组件来处理这个意图。查找规则如下:

<intent-filter>

<action android :name="android.intent.action.CALL"/>

<category android:name="android.intent.category.DEFAULT"/>

<data android:scheme="tel"/>

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.CALL"/>

<category android:name="android.intent.category.DEFAULT"/>

<data android:mimeType="vnd.android.cursor.item/phone"/>

</intent-filter>

4.Activity的生命周期

Activity有三个状态

当Activity在屏幕前台的时候(位于当前任务堆栈的顶部),它处于激活或者运行状态,可以响应用户操作

当Acitvity上边有另外一个Activity,上面的Activity没有完全覆盖它,或者上面的activity是透明的,这是下方的activity对用户可见,下方的保持暂停状态,如果系统内存不足时会杀死这个activity

当activity完全被另外一个activity覆盖时处于停止状态,仍然保留所有的状态和成员信息,但是对用户不可见,它的窗口被完全隐藏,如果其他地方需要内存,系统会杀死这个activity

activity从一种状态转变为另一种状态的时候,会调用以下保护方法来通知这种变化:

void onCreate(Bundle savedInstanceState)

void onStart()

void onRestart()

void onResume()

void onPause()

void onStop()

void onDestroy()

8-25 Android学习笔记