Activity

  1. 概念:(手机的一屏)一个应用程序中可以包含多个Activity, 不同的Activity展示不同的可操作界面。四大组件之一

四大组件:Activity用程序组件  Service服务   content Provider内容提供 BroadcastReceiver广播接收器

  1. 作用:显示用户的界面,监听UI控件的事件
  2. 如何创建?
  1. 创建一个类,继承Activity,重写onCreate()用来将Activity显示出来 
  2. setContentView()设置界面布局方式
  1. 注册
  1. XML清单文件中完成注册,可用intent-filter指定默认的Activity

<intent-filter>

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

//category用来指定当前activity被执行的环境

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

</intent-filter>

注意:Main程序入口合Launcher起使用

用属性值:

Category:

  CATEGORY_DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行。 

CATEGORY_HOME:设置该组件为Home Activity

CATEGORY_PREFERENCE:设置该组件为Preference。 

CATEGORY_LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。 

CATEGORY_BROWSABLE:设置该组件可以使用浏览器启动。 

CATEGORY_GADGET:设置该组件可以内嵌到另外的Activity中。

 

  1. Intent作用:启动Activity,组件之间传值
  2. 启动Activity
  1. 定义Intent对象

Intent intent = new Intent(当前Activity.this,目标Activity.class);

  1. 启动Activity

startActivity(intent);

  1. 页面跳转方式
  1. 显示Intent意图

Intent intent = new Intent(MainActivity.this,InfoActivity.class);

startActivity(intent);

 

  1. 隐式Intent

步骤:1.配置清单文件

<intent-filter>

<action android:name = “activity名称”>

<category android:name =”android.intent.category.DEFAULT”>

</intent-filter>

2.编写代码

  Intent intent = new Intent();

  Intent.setAction(“activity名称“);

  startActivity(intent);

 

  1. 传值方式
  1. 显示Intent意图对象传值

 

传递基本数据类型(8种)

A:

Intent intent = new Intent(MainActivity.this,InfoActivity.class);

intnet.putExtra(“键”,“值”);

startActivity(intent);

 

B:

Intent intent = getIntent();

String msg = intent.getStringExtra(“键”);

注意:以上用于传递基本数据类型的数据,如果要传递引用数据类型,则要实现Serializable接口

传递引用数据类型

A:

Intent intent = new Intent(MainActivity.this,InfoActivity.class);

User user = new User(); //User类实现序列化接口

intnet.putExtra(“键”,user);

startActivity(intent);

B:

Intent intent = getIntent();

String msg = intent.getSerializableExtra(“键”);

  1. 打包数据

A:

Intent intent = new Intent(MainActivity.this,InfoActivity.class);

Bundle bundle = new Bundle();

bundle.putString(key,value);

intent.putExtras(bundle);

startActivity(intent);

 

   B:

Intent  intent = getIntent();

Bundle bundle = intent.getExtras();

String sex = bundle.getString(key);

  1. 回传数据

A:  startActivityForResult(intent,requestCode);

B:  setResult(resultCode,data);//data 是一个Intent对象,用于存入返回的数据

A:  重写父类的方法:  onActivityResult(requestCode,resultCode,data);

  1. 生命周期
  1. 四种状态:

运行状态当Activity位于栈顶时,此时正好处于屏幕最前方,此时处于运行状态  

停状态当Activity失去了焦点但仍然对用于可见(如栈顶的Activity是透明的或者栈顶Activity并不是铺满整个手机屏幕),此时处于暂停状态  

止状态: 当Activity被其他Activity完全遮挡,此时此Activity对用户不可见,此时处于停止状态  

销毁状态当Activity由于人为或系统原因(如低内存等)被销毁,此时处于销毁状态

  1.  

onCreate() 第一次创建时调用 初始化Activity

onDestroy() 销毁时执行 销毁Activity

onStart() 显示界面时执行(无论何时只要显示界面都会执行) 显示Activity

onStop() 界面不可见    停止Activity

onPause() 界面可见,但是失去焦点时    停止与用户交互

onResume() 界面可见,并能获得焦点         与用户交互

onRestart() 重新显示界面时执行   重新显示Activity

 

  1. 运行界面时: oncreate() onstart() onResume()
  2. 关闭界面时(按Back键): onpause()  onStop() onDestroy()
  3. 跳转界面时:A中按钮来到B时,假设B全部遮挡住了A,将依次执行A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop

如果点击Back键,将依次执行B:onPause -> A:onRestart -> A:onStart -> A:onResume -> B:onStop -> B:onDestroy

  1. 界面切到后台时(按Home键):onPause()  onStop()
  2. 横竖屏时:生命周期会受到影响

 

  1. Android返回栈:

Android是使用任务(Task)来管理Activity的,一个任务就是一组存放在栈里的Activity集合,这个栈被称作返回栈

 

  1. 设置启动模式

<activity android:launchMode = “”>

值:

Standard:(拿来主意)   每一次点击都会创建一个新的实例, 放入栈的顶端

singleTop:(拒绝堆叠) 可以创建多个实例,但栈顶只能出现一个

优点:防止页出现多次,带来不好的用户体验

singleTask:(独立门户)只能创建一个Activity实例。并且不允许启动栈上方有其它的Activity

singleInstance: (孤独寂寞)当使用这种模式启动的Activity时, 系统会单独分配一个任务.不与其它Activity共享一个栈

  1. Activity七大属性

action:必须保证action在Android中是唯一

category  Activity类型:

android.intent.category.DEFAULT     默认的, 普通的Activity

android.intent.category.LAUNCHER    程序入口, 优先级最高

data   指定action,将必要的数据放入data中

type如果data的数据是文件的路径, 那么需要通过type来指定文件的类型

extra额外数据, 一般用于Intent传值

componentName包装android组件

flag代码设置启动方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值