从瓶颈到精通——Android四大组件:Activity

今天开始,每天不定期写关于Android从瓶颈到进阶的文章。
主要是挖掘一些不常用的API,或者是不常用到的开发技能等等,做一个汇总,总结中摸索提高技能。

说到Activity,必须掌握的Activity的生命周期、生命周期含义、启动模式、内存回收处理,Activity创建过程这里暂时不做讲解记录

生命周期

这里写图片描述
1.onCreate:Activity开始创建,这时还不可见,可做View的渲染,数据加载初始化等操作。
2.onStart:Activity开始启动,仍不可见
3.onRestart:这里表示当前Activity从不见状态重新恢复时调用
4.onResume:表示已经创建完成,此时Activity已经可见
5.onPause:此时Activity被覆盖(失去焦点),处于暂停状态。(PS:如果覆盖的Activity是透明主题,则前一个Activity不会onPause)
6.onStop:表示当前Activity已经处于停止状态,已经完全不可见,这时可做一些重量级回收工作(因为新建一个Activity时旧的Activity必须在onStop后才能启动新的Activity,如果回收工作不放在这里,则会影响下一个Activity的启动速度)
7.onDestory:当一个Activity走到这里时,也就代表即将被销毁

以上情况是正常情况下的Activity启动流程
非正常情况下又有哪些注意事项呢?

Android的内存回收机制是根据进程的优先等级进行判断的,当手机的运行内存紧张时,回收工作会从当前所有进程中选择进程等级最低的开始回收,这时有一个放在后台(onStop的Activity)很久的应用,那么回收一定会从它开始(虚拟机:我能怎么办?我也很无奈啊!),回收时唯一能补偿一点就是会调用当前Activity的onSaveInstanceState函数。我们可以在这里的Bundle中记录一些需要被保存的数据。
当重新启动这个Activity时可以从onCreate中拿到保存的Bundle数据(ps:这里并不是任何时候都可以拿到,当用户手动清理这个app进程时,保存的Bundle随之回收)

dispatchTouchEvent()

什么?这不是view中的函数吗,Activity这里也有是几个意思呢
Activity说白了就是一个Window和ContentView两者之间的控制器,既然是控制器就一定需要传递事件给ContentView,所以这里的dispatchTouchEvent()还是传递到了View之中,不必大惊小怪了

关于键盘的监听
关于键盘和软件盘的监听一直是个老生常谈的问题,总有人提问:如何监听XXX键?
今天就来讲个明白
在KeyEvent类中,声明了很多键盘值的常量,(abcdefg…12345..上下左右..空格Ctrl等),总之键盘的按键都有了,当然也不会少了手机上的back,home,menu等键了
Activity中有这么一个函数:onKeyDown(int keyCode, KeyEvent event)
keyCode就是代表当前按下的keyCode,只需要做一个if判断就好了

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值