安卓Activiti与Intent笔记

Activiti与Intent笔记

Android系统的四大组件:

  • 活动(Activity)
  • 服务(Serview)
  • 广播接收器 (Broadcast Receiver)
  • 内容提供器(Content Provider)

Activity

使用setContentView(View)放置View

生命周期:

onCreate(); 活动第一次被创建是调用,可以做常规静态设置,还提供一个Activity先前保存页面的Bundle

onStart();活动由不可见到可见时调用,已可见,但无法与用户进行交互。

onResume();活动将开始与用户进行交互

onPause();活动失去前台状态,不再可聚焦,但用户依然可见

onStop();活动对用户不可见

onRestart();活动由停止状态到运行状态

onDestory();活动被销毁前最后调用的方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vDiPsXvB-1658112370891)(C:\Users\wangwei.guo\Desktop\郭王伟笔记\郭王伟笔记\md图片存储\4034970a304e251fe331f2d8eb321b1f7e3e530c.jpeg)]

流程:
  • Activity启动:onCreate()->onStart()->onResume().
  • 点击Home返回主界面:onPause()->onStop()
  • 点击Home返回主界面(如果新的Activity为透明):onPause() 不调用onStop
  • 在次回到原Activity:onRestart()->onStart()->onResume()
  • 退出当前Activity:onPause()->onStop()->onDestroy()
  • 当执行到onPause()方法Activity失去焦点,重新返回时调用onResume()
  • 当执行到onStop方法,重新返回会执行onRestart(),如果进程被销毁,重新执行onCreate()方法
  • A、B之间切换:A->B,onPause(A)->onCreate(B)->onStart(B)->onResume(B)->onStop(A)。按Back键返回A:onPause(B)->onReStart(A)->onStart(A)->onResume(A)->onStop(A)
  • A、B之间切换(如果B为透明主题)A-B onPause(A)->onCreate(B)->onStart(B)->onResume(B) 。返回AonPause(B)->onResume(A)->onStop(B)->onDestory(B)
onPause()数据保存

将关键的持久性数据写入存储,如果需要保存用户输入的数据,在onPuase()中

当系统销毁Activity以恢复内存时,Activity对象被破坏,因此系统不能完好无损地恢复它的活动状态。可以使用onSaveInstanceState(),onSaveInstanceState()方法会在Activity被破坏前系统自动调用。

系统将重新创建活动并将其Bundle传递给Activity的onCreate()和onRestoreInstanceState()

横竖屏切换对生命周期的影响

横竖屏切换涉及到的是Activity的android:configChanges属性:

  • orientation 取消横竖屏的影响
  • keyboardHidden 取消键盘的影响
  • screenSize 消除屏幕大小的影响

当我们设置Activity的android:configChanges属性为orientation或者orientation|keyboardHidden或者不设置这个属性的时候,会重新加载Activity的各个生命周期.

onPause()->onStop()->onDestory()->onCreate()->onStart()->onResume()

当我们设置Activity的android:configChanges属性为orientation|screenSize或者orientation|screenSize|keyboardHidden,即设置了orientation|screenSize属性之后,在进行横竖屏切换的时候会调用方法onConfigurationChanged,而不会重新加载Activity的各个生命周期.

活动的启动模式
  • standard:默认,每启动一个活动,都会在返回栈中入栈

  • singleTop:如果要启动的活动已处于栈顶,直接使用,同时它的OnNewIntent方法会被调用。如果不在栈顶,重新创建一个实例

  • singleTask:每次启动活动时在返回栈中查看是否存在,如果存在则直接使用该实例,保证返回栈中的唯一。系统会调用其OnNewIntent方法,即使不在栈顶,则把此活动之上的所有活动出栈。如果没有发现就会创建一个新的活动实例。具备singleTask模式的所有的特性,该模式下会启用一个新的单独的返回栈管理这个活动,可以实现程序间共享该活动

  • singleInstance

    可以在AndroidManifest.xml中通过给标签指定android:launchMode属性来选择启动模式

Intent

  • 活动间跳转
  • 携带数据
  • 启动活动
  • 启动服务
  • 播放广播·

显示的启动活动:

Intent intent =   new Intent(FirstActivity.this, SecondActivity.class);

startActivity(intent);

隐式Intent:

返回数据给上一个活动:

FirstActivity中,通过startActivityForResult()方法,第一个参数是Intent,第二个是请求码,用于在之后的回调中判断数据的来源

Intent intent=   new Intent(FirstActivity.this, SecondActivity.class);

startActivityForResult(intent, 1);

接着在SecondActivity中给点击事件添加返回数据的逻辑:

Intent intent =   new Intent();

intent.putExtra("data_return","Hello FirstActivity");

setResult(RESULT_OK, intent); 

// 专门用于向上一个活动返回数

finish();

SecondActivity销毁后(如点击了按钮或者按下Back键),由于使用了startActivityForResult()方法来启动SecondActivity,会回调FirstActivity中的onActivityResult()方法,所有必须重写此方法:

若在SecondActivity中不是通过点击按钮,而是通过按下Back键回到FirstActivity,这样需要在SecondActivity中重写onBackPressed()方法来返回数据:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值