【问题标题】:Android screen flickering when starting an Activity启动 Activity 时 Android 屏幕闪烁
【发布时间】:2019-02-06 22:30:55
【问题描述】:

我正在使用startActivityForResult() 开始一项活动并向其发送额外信息,然后关闭第二个活动并返回前一个发送数据的活动。

  • 仅在启动第二个活动时(而不是回到第一个活动);

  • 仅当软键盘打开时

  • 仅在有根设备或模拟器上,

这种奇怪的行为发生了。

我已经尝试过这里发布的解决方案:Blinking screen on image transition between activities 和这里:Starting Activity on condition produces a flicker on screen,但没有成功。

这是(琐碎的)代码。 顺便说一句,这(当然)发生在 Java 或 Kotlin(提供)中;如果我调用 startActivity() 而不是 startActivityForResult() 也会发生这种情况

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn_main.setOnClickListener { launchSecondActivity() }
    }

    private fun launchSecondActivity() {
        Intent(this, SecondActivity::class.java).run {
            putExtra(EXTRA_MESSAGE, editText_main.text.toString())
            startActivityForResult(this, RETURN_MESSAGE_CODE) 
            Log.d("MainActivity", "Sending ${this.extras}")
            // clean the editText
            editText_main.setText("")
        }
    }
}

【问题讨论】:

    标签: android android-activity kotlin


    【解决方案1】:

    当您启动第二个活动时,键盘仍然可见,并且它正在向上移动布局直到它关闭。 尝试在您的活动清单中关注

    <activity android:windowSoftInputMode="adjustResize"> </activity>

    adjustResize 不会向上移动工具栏,但会调整窗口高度,因此希望屏幕不会闪烁。如果延迟启动 Activity 以让键盘完全关闭没有帮助。

    【讨论】:

    • 成功了,伙计。谢谢!但是......为什么这不会发生在大多数设备上(到目前为止只有根设备)并且仅在从第二个活动切换回第一个活动时才会发生?当我从第二名回到第一名时,我正在使用类似的方法(打开键盘,点击按钮)。
    • 实际上我注意到它并没有做我想要的。这只是让键盘保持打开状态?
    • 不客气!我认为这与活动创建时间有关。活动的第一次开始和第二次开始(返回)时间可能不同。将您的startActivityForResult 放在editText.setText() 之后的末尾并试一试。为什么只扎根……很难猜
    • 所以使用这个
    • 成功了!同样,我完全不明白为什么这只发生在某些设备和模拟器上,而在其他设备和模拟器上却没有。 android编程总是这么随机吗?将深入研究这些选项的作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2016-08-17
    • 1970-01-01
    • 2012-08-27
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多