我在TabHost中的Activity中有一个SurfaceView派生类(比如HelloTabWidget示例)。我正在使用的SurfaceView带有优秀的andrtoid-flot-chart库:FlotChartContainer.java
当我在标签之间切换时,一切正常。但是,只要包含此视图的选项卡已初始化(例如显示),我的应用程序就注定失败了。只要发生以下情况,它就会崩溃:
按主页按钮 当我重新打开我的应用程序时,它会因surfaceCreated()中的 IllegalStateException 而崩溃。
开始新活动 当我开始一个新活动( startActivity )并按下Back按钮(这会调用我的SurfaceView的 surfaceDestroyed ......?!)时,由于 IllegalStateException而崩溃在surfaceCreated()中。
请帮忙!
答案 0 :(得分:0)
检查android中的活动生命周期,而onPause(),onStop(),onDestroy(),破坏已在应用程序中使用的表面视图,并在onResume()中重新创建表面,然后它正常工作。 / p>
答案 1 :(得分:0)
在尝试使用onPause()
,onResume()
,surfaceChanged()
和surfaceDestroyed()
之后,我终于想出了一个解决这个特殊情况的丑陋解决方案:
onResume()
。onPause()
。 @Karthi_heno
你指出我正确的方向。关键是要正确处理onPause()
。但是,我遇到了奇怪的延迟(大约10秒,可能是由于Canvas.lockCanvas()
来电)......