Activity常见问题

1.关于Activity的执行startActivityForResult的时候onActivityResult提前执行(在finish之前执行)

例子,有两个Activity ,A是启动Activity,B是目标Activity
如果B Activity的的启动模式

android:launchMode="singleTask"

则某些手机(4.4的华为和小米手机遇到的)的onActivityResult会提前执行,导致A收不到回调。
解决办法,将B Activity的启动模式改为

android:launchMode="standard"
2.关于桌面上的app点击提示未安装该应用的问题

原因:android:exported 这个属性



    
    


解决办法
android:exported="false" 去掉即可,桌面启动页不能加该属性

3. Activity在xml的三个常用配置
configChanges
android:configChanges="orientation|keyboardHidden|screenSize"

设置该属性,可以使得在屏幕方向变化和键盘显隐时,不会再重建Activity,其中screenSize是在4.0必须加上的
(会回调onConfigurationChanged方法)

不设置该属性,则会发生上述两个变化时,重建Activity

windowSoftInputMode
android:windowSoftInputMode="stateHidden|adjustResize"

windowSoftInputMode表示软键盘的弹出方式

stateHidden:用户导航(navigate)到你的Activity的时候,隐藏软键盘
adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
adjustPan:adjustResize失效时,调用这个可能会有用

screenOrientation
android:screenOrientation="portrait"

手机屏幕的方向,一般我们都固定为竖直方向

4. singleTask问题

当Activity被设以singleTop启动,当需要再次响应此Activity启动需求时,会复用栈顶的已有Activity,还会调用onNewIntent方法。
并且此时的生命周期很奇怪 onNewIntent->onResume->onPause->onResume

你可能感兴趣的:(Activity常见问题)