美文网首页
Activity常见问题

Activity常见问题

作者: sofarsogoo_932d | 来源:发表于2017-12-22 12:46 被阅读0次
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 这个属性

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:launchMode="singleTop"
    android:configChanges="orientation|keyboardHidden|navigation"
    android:exported="false"
    android:screenOrientation="behind">
<intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

解决办法
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常见问题

      本文链接:https://www.haomeiwen.com/subject/slqujxtx.html