美文网首页
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