概述:上大学期间开发过Android app,但也是东拼西凑最好艰难的完成了。加上时间的推移,对于Android的了解也是所剩无几。目前想重新学习Android开发,希望把自己的想法做成App。所以以下只是自己对Activity的浅显理解,都是大白话,也希望能够帮助到大家,并且也烦请大家看到不对之处及时指出,大家能够共同进步。
图片来源https://pixabay.com/photos/computer-computers-1245714/Activity生命周期:
共有7个生命周期:onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart(), onDestory()
当用户启动应用时,会调用根Activity的onCreate(), onStart(), onResume()。当用户一直属于与此Activity交互的状态,则会保持onResume()状态。
当用户使当前页面处于半透明状态,那么Activity则处于onPause()状态,当回到页面则重新调用Activity的onResueme()状态。如下图所示:
半透明状态如果用户退出应用回到手机菜单,或打开其他应用(并没有销毁应用),则Activity处于onStop()状态,再次回到此应用则会重新调用Activity的onStart()状态,然后调用onResume()状态。Activity长时间处于onStop()状态,再次回到页面可能会回到根Activity()。
当用户退出应用回到手机菜单,打开其他应用,然而新打开的应用需要更大的内存或者内存不够可能会彻底销毁Activity,也就是onDestory()。
Stack栈:
为了方便管理Activity,Activity会以后进先出的排序方式放入(push)到栈(Stack)中。用户打开应用第一步会调用根Activity被push到stack中,当根Activity启动其他Activity,则根Activity处于stack底部,新启动的Activity处于stack中的顶部。如用户返回根Activity,则当前Activity会被从stack中remove。如果用户退出应用后再次返回应用,则会回到处于Stack顶部的Activity。
当用户一直返回,那么Activity会按照后进先出的顺序从stack中remove。
Task任务:
一般情况下,每个应用都属于一个task。我们启动应用时,那么应用相关联的Activities会被放入同一个task中对应的stack里。如果用户退出应用,那么应用的task任务会被终止,当想再次返回此task任务时,只需要调用task中对应的stack里的Activity即可恢复之前所处在的状态。
因为相同的Activity可以被多次实例化,所以用户可以通过设置启动模式来选择相关联的task任务,也就是说当用户从一个Activity中启动另一个Activity,可以选择启动模式,可以将新启动的Activity放入到新的task中。
根据上述所说我们也可以反其道而行之,将不同应用的Activity放入到同一个task中对应的stack里,从而达到跨应用之间的交互也保证能够回到应用的上一级菜单(Activity)。举例来说微博有分享文章到微信的功能,此时我们可以选则将矿应用之间的分享微信这个Activity放入到微博的task对应的stack里,从而达到回到微博继续浏览的功能。
网友评论