Android退出Activity如何关闭软盘

最近在做登录页面,在输入框弹出软盘的时候,点击左上角finish掉页面,软件总是没关闭,这样的体验非常的差

通过这段代码

 

fun hideSoftInput(activity: Activity) {
        try {
            val im = activity
                    .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
            im.hideSoftInputFromWindow(activity.currentFocus.windowToken, 0)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

  

按正常来说,我们在结束activity的时候,就调用这个方法

比如在调用onDestroy方法的时候,就调用hideSoftInput(this).

 

 

但是,这个方法竟然不成功,后面我仔细研究了activity的生命周期

 

 

研究这个图之后,发现onDestroy()方法调用的时候,activity的上下文就已经被内存回收了

只有onPause()的时候,上下文this还在

所以,如果要退出软盘的时候,可以在onPause()的时候调用.

posted @ 2020-04-28 10:12  施行  阅读(199)  评论(0编辑  收藏  举报