【发布时间】:2015-11-06 16:16:29
【问题描述】:
我试图在权限更改期间了解应用程序及其组件的生命周期。
给定:
targetSdk = 23
compileSdk = 23
假设我打开了我的应用程序并显示了一个片段,并进行了设置并撤销了权限。
我的理解是该过程已重新启动,但是没有调用任何 Fragments 生命周期方法(onCreateView 等...),这导致我的测试工具应用程序在返回应用程序时崩溃。
撤销权限返回后,我在片段上触摸了一个按钮:
'android.os.IBinder android.widget.EditText.getWindowToken()' on a null object reference
此代码用于隐藏屏幕键盘(如果显示),如果需要,我可以将其删除,但这里的问题是,如果重新启动进程,为什么不重新创建片段?
编辑:做了更多的日志记录。所以看起来片段/活动正在调用生命周期方法,但似乎重新初始化并没有真正完成。
【问题讨论】:
-
您的进程因权限撤销而终止与您的进程因任何其他原因而终止之间应该没有区别。
-
听起来你在这里做错了什么。
-
你提到这是在测试期间。您的测试是否引用了
Activity?您的测试可能会保留一个已被破坏且不再有窗口的活动。在这种情况下,您的测试工具应该获得对新创建活动的引用。 -
@Kitesurfer 是的,这是别的东西,其他人的代码 =/ 他们引用了一个在娱乐时可能存在或不存在的对象。在别处解决了这个问题。
标签: android android-fragments android-permissions android-6.0-marshmallow