页面跳转和数据传递

Activity

  • 安卓四大组件之一

创建Activity

  • 定义java类,继承Activity
  • 在清单文件中配置activity标签

Activity跳转

  • 显示跳转
    • 同一应用中,指定目标Activity的zi字节码和当前的上下文
    • 不同应用中,指定目标Activity所在的应用的包名和目标Activity的包名加类名
  • 隐私跳转
  • 指定action和data
页面跳转和数据传递_第1张图片
Activity跳转
页面跳转和数据传递_第2张图片
显示启动拨号器
页面跳转和数据传递_第3张图片
找到拨号器的Activity
页面跳转和数据传递_第4张图片
注意应用包名

应用包名和类包名可以不一样,默认是一样的。应用包名也是类包名

配置intent-filter让activity可以隐私启动

  • 在清单文件的activity标签下,配置intent-filter子节点,其中再配置action和category 如果不配只能被显式启动。
    在所有的清单文件中去寻找与程序员创建的intent匹配的intent-filter的Activity。找到则启动,找不到则抛异常。

Activity 跳转传递数据

Activity生命周期

页面跳转和数据传递_第5张图片
Activity生命周期
  • onCreate():创建时调用
  • onStart():在屏幕上可见,但是没有获得焦点
  • onResume():可见并获得焦点
  • onPause(): 可见,但是失去焦点
  • onStop():不可见
  • onDestory( ):销毁时调用
  • 手机内存不足时,会杀死之前启动的进程,按照LRU算法(最近最少使用算法)锁定杀死谁

Activity启动模式

  • Activity task stack:任务栈(存放Activity实例的)
    • 连续的内存空间
    • 后进先出
  • standard
    默认是标准默认
  • singleTop
    如果启动的activity在栈顶则不创建,不跳转
    应用场景:防止第三方多次启动
  • singleTask
    如果Activity没有被创建任何实例,那么启动时会创建,如果已经在栈顶了,就不会再创建了,那么启动时是返回至该Activity而不会再创建该Activity。保证该Activity时在栈中只有一个实例。
    应用场景:手机浏览器
    页面跳转和数据传递_第6张图片
    singleTask应用场景

    这样做为了节省资源
  • singleStance
    在一个单独的任务栈中创建该Activity的实例,然后再也不会创建第二个实例了,以后每次启动该Activity,都会把该Activity的所显示的栈显示至前台。
    保证整个系统的内存都只存在唯一个该Activity实例
    应用场景:
    页面跳转和数据传递_第7张图片
    来电界面
页面跳转和数据传递_第8张图片
来电

横竖屏切换

页面跳转和数据传递_第9张图片
屏幕切换

目前一般不支持横竖屏切换


页面跳转和数据传递_第10张图片
写死屏幕切换
页面跳转和数据传递_第11张图片
竖屏

如果一套布局可以支持横竖屏的话。

页面跳转和数据传递_第12张图片
不要系统处理
  • 默认情况横竖屏切换会触发生命周期方法重新执行,Activity销毁
  • 使用以下代码让横竖屏切换时不重建Activity
android:configChanges="orientation|screenSize|keyboardHidden"
  • 用以下代码写死屏幕方向
android:screenOrientation="portrait"

也可以这么写死屏幕


代码写死

点击ListView返回Intent

页面跳转和数据传递_第13张图片
weight布局
页面跳转和数据传递_第14张图片
请求Activity为结果
页面跳转和数据传递_第15张图片
处理请求Activity结果
页面跳转和数据传递_第16张图片
通过返回请求码处理
页面跳转和数据传递_第17张图片
通过结果码处理不同数据

你可能感兴趣的:(页面跳转和数据传递)