欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

调用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。