8-25 Android 学习ing

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()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

在CentOS上使用Jexus托管运行 ZKEACMS

ZKEACMS Core 是基于 .net core 开发的,可以在 windows, linux, mac 上跨平台运行,接下来我们来看看如何在 CentOS...

20950
来自专栏编程之路

# 羊皮书APP(Android版)开发系列(二十六)开机自启动app的实现

1) Apk需要设置默认安装到手机内存,外设SD卡是接收不到开机广播,这里只针对安装位置为手机内存的app。

8750
来自专栏世界第一语言是java

Android N 7.0、8.0 上自动安装apk问题

如果安装报错,可能是临时文件访问路径没有配置,或者百度上找到的安装代码是旧版本的,7.0以后不在支持,文章最下面有适配的代码。

16820
来自专栏程序员互动联盟

【Android基础】Android利用Intent与其他应用交互

前言: 上一篇博客给大家聊了Intent的定义,分类、属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent...

372100
来自专栏向治洪

我所理解的Android 启动模式

首先,这是从 一个开源网站转载的,觉得写得不错,对我们之前理解的activity的启动模式是一个新的理解方式,并给出实际的应用场景。 任务栈是什么 任务栈Tas...

25070
来自专栏Android干货

Android项目实战(四十):Andoird 7.0+ 安装APK适配

32160
来自专栏张善友的专栏

在 CentOS 上使用 Jexus 托管运行 ZKEACMS

ZKEACMS Core 是基于 .net core 开发的,可以在 windows, linux, mac 上跨平台运行,接下来我们来看看如何在 CentOS...

73500
来自专栏非著名程序员

Android调用手机中的应用市场,去评分的功能实现

在我们常常使用的软件当中,我们经常可以看到在软件的设置界面,有一个功能那就是去评分的功能,只要我们一点击“去评分”就会调用手机中的应用市场软件。一开始我以为这个...

21750
来自专栏程序员互动联盟

【Android基础】Android中的Intent详解

前言: 每个应用程序都有若干个Activity组成,每一个Activity都是一个应用程序与用户进行交互的窗口,呈现不同的交互界面。因为每一个Acticity...

45570
来自专栏分享达人秀

四大组件的纽带——Intent

前面学习Activity时己经多次使用了 Intent,当一个Activity需要启动另一个Activity时, 程序并没有直接告诉系统要启动哪个Act...

23250

扫码关注云+社区

领取腾讯云代金券