调用Popup时发生is your activity running 博客分类: 异常处理 Android UI 特效Android 开发Popup
程序员文章站
2024-03-21 12:31:52
...
应策划要求,做一个左下角悬浮框的效果,于是快马加鞭,写了个Popup,接关就遇到了下面这个诡异的异常。
在调用Popup时,出现"is your activity running"异常,针对该异常信息的提示,认为是该Activity未启动,加上this.isFinishing方法,无用,判断可能出现Context被锁住,改写代码,无用,this、this.getParent(NullPrintException)、getApplicationContext通通试过,无用,猜想可能是Activity未加载完导致该问题,使用Thread.sleep(),无用,参考网友提示:Handler+Runnable,无用,奇怪的是,在某点击事件里,调用该Popup时,无问题,遇到这种奇怪的异常,真是束手无策,不得已,换成了Dialog,解决问题。
之前之所以没有使用Dialog,是不知道Dialog可以设置在屏幕中的坐标位置,最后打算和策划说明问题时,抱着试一试的心态,上网查了Dialog设置坐标的事,原是可以的,相关代码附上:
Window window = dialog.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.x = x; //坐标点0,0为屏幕中心点 lp.y = y; window.setAttributes(lp);
关于Popup的那个异常,有哪位高手有解决方案,望能提示一二。
续:调用Popup需要Activity完成全部生命周期之后,runnable+handler理论上是可以的,经过测试没用,说明在生命周期里使用线程刷新UI时,生命周期并没有执行完,响应按键事件必须在Activity生命周期(到onResume())结束后,这也就是为什么在点击事件里,可以调用Popup。