开始活动时Android屏幕闪烁

时间:2019-02-06 22:30:56

标签: android android-activity kotlin

我正在以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("")
        }
    }
}

1 个答案:

答案 0 :(得分:1)

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

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

adjustResize不会将工具栏向上移动,但会调整窗口高度的大小,因此希望屏幕不会闪烁。如果这样做不能帮助延迟启动活动,让键盘完全关闭。