今天说一下遇到的几个问题。
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对象在当前的栈中只存在一个。
本文深入探讨了Android应用开发中的核心概念,包括dp与px的换算、Activity生命周期方法及其启动模式,旨在帮助开发者理解Android系统的工作原理与优化实践。通过具体实例,清晰展示了onPause()、onStop()方法的作用以及不同启动模式下Activity的行为差异,为开发者提供了实用的指导。
1383

被折叠的 条评论
为什么被折叠?



