初入android,android studio熟悉(三)

本文深入探讨了Android应用开发中的核心概念,包括dp与px的换算、Activity生命周期方法及其启动模式,旨在帮助开发者理解Android系统的工作原理与优化实践。通过具体实例,清晰展示了onPause()、onStop()方法的作用以及不同启动模式下Activity的行为差异,为开发者提供了实用的指导。

今天说一下遇到的几个问题。

1.android 使用dp 这个百度了好多,发现道理大家都懂,但是真的要说出个所以然来,很少有人能够做到。

dp与px换算公式:

    px=dp * (densityDpi/160).

    dp=(px*160)/densityDpi

为什么要使用dp?(我也只是明白道理,还在研究)

2.onPause()什么时候出来。

有3个Acitivity,分别用One,Two(透明的),Three表示,One是应用启动时的主Activity

启动第一个界面Activity One时,它的次序是

onCreate (ONE) - onStart (ONE) -onResume(ONE)

点"打开透明Activity"按钮时,这时走的次序是

onPause(ONE) - onCreate(TWO) - onStart(TWO)- onResume(TWO)

再点back回到第一个界面,Two会被杀这时走的次序是

onPause(TWO) - onActivityResult(ONE) -onResume(ONE) - onStop(TWO) - onDestroy(TWO)

点"打开全屏Activity"按钮时,这时走的次序是

onPause(ONE) - onCreate(Three) -onStart(Three) - onResume(Three) - onStop(ONE)

再点back回到第一个界面,Three会被杀这时走的次序是

onPause(Three) - onActivityResult(ONE) -onRestart(ONE) - onStart(ONE)- onResume(ONE) - onStop(Three) - onDestroy(Three)

再点back退出应用时,它的次序是

onPause(ONE) - onStop(ONE) - onDestroy(ONE) 

我想这个例子就很明了了,onPause()我理解为暂停,onStop()停止。

3.activity的启动模式

standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。

A-B-C-D(D在最上) 调用D A-B-C-D-D

singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。

A-B-C-D 调用D A-B-C-D     调用A A-B-C-D-A

singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。

A-B-C-D  调用E  A-B-C-D-E 调用B  A-B  

singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。在一个新栈中创建该Activity实例,并让多个应用共享该栈中的该Activity实例。一旦该模式的Activity的实例存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。

此启动模式和我们使用的浏览器工作原理类似,我们都知道在多个程序中访问浏览器时,如果当前浏览器没有打开,则打开浏览器,否则会在当前打开的浏览器中访问。此模式会节省大量的系统资源,因为他能保证要请求的Activity对象在当前的栈中只存在一个。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值