當Surfaceview通過接收呼叫或退出並返回到應用程序進入背景時,我的應用程序崩潰。我讀到surfaceexetroyed不接到這些情況的電話,但 給出的解決方案沒有爲我工作。 如果有人可以用我的代碼來幫助我,我會很樂意。 感謝當桌面進入背景時,Surfaceview崩潰
public GameLoopThread(GameView view)
{
this.view=view;
}
public void setRunning (boolean run)
{
running=run;
}
@Override
public void run() {
long ticksPerSecond=1000/FPS;
long startTime;
long sleepTime;
while (running)
{
Canvas c=null;
startTime=System.currentTimeMillis();
try {
c=view.getHolder().lockCanvas();
synchronized (view.getHolder()) {
view.onDraw(c);
}
} catch (Exception e) {
// TODO: handle exception
}
finally{
if(c!=null)
view.getHolder().unlockCanvasAndPost(c);
}
sleepTime=ticksPerSecond-(System.currentTimeMillis()-startTime);
try
{if(sleepTime>0)
sleep(sleepTime);
else
sleep(10);
}
catch(Exception e){}
synchronized (mPauseLock) {
while (!running) {
try {
mPauseLock.wait();
} catch (InterruptedException e) {
}
}
}
}
and in the surfaceview:
public void surfaceDestroyed(SurfaceHolder holder) {
if(gameLoopThread.isAlive())
{
boolean retry = true;
gameLoopThread.setRunning(false);
while (retry) {
try {
gameLoopThread.join();
retry = false;
} catch (InterruptedException e) {
}
}
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
if(!gameLoopThread.isAlive())
{
gameLoopThread.setRunning(true);
gameLoopThread.start();
}
}
也許logcat的幫助:
9月10日至22日:35:06.310:DEBUG /夥伴-------------- --------------->(10985):服務:OnReceive ACTION_HOME_RESUME調用 10-22 09:35:06.315:DEBUG/AndroidRuntime(3275):關閉VM 10-22 09:35 :06315:WARN/dalvikvm(3275):threadid = 1:線程退出與未捕獲的異常(組= 0x4001e578) 10-22 09:35:06.315:錯誤/ AndroidRuntime(3275):致命異常:主 10-22 09:35:06.315:ERROR/AndroidRuntime(3275):java.lang.NullPointerException 10-22 09:35:06.315:ERROR/AndroidRuntime(3275):at tomer.idunku3.GameView $ 1.surfaceDestroyed( GameView.java:126) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275):在android.view.SurfaceView.reportSurfaceDestroyed(SurfaceView.java:613) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275):在android.view.SurfaceView.updateWindow(SurfaceView.java:498) 10-22 09:35:06.315:錯誤/ AndroidRuntime(3275):在android.view.SurfaceView.updateWindow(SurfaceView.java: 407) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275):在android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:217) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275) :在android.view.View.dispatchWindowVisibilityChanged(查看。的java:4080) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275):在android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:720) 9月10日至22日:35:06.315:ERROR/AndroidRuntime( 3275):at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:720) 10-22 09:35:06.315:ERROR/AndroidRuntime(3275):at android.view.ViewRoot.performTraversals(ViewRoot.java:790) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275):在android.view.ViewRoot.handleMessage(ViewRoot.java:1868) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275):在android.os.Handler.dispatchMessage(Handler.java:99) 10-22 09:35:06.315:ERROR/AndroidRuntime(3275):at android.os.Looper.loop(Looper.java:123) 10-22 09:35:06.315:ERROR/AndroidRuntime(3275):at android.app.ActivityThread.main(ActivityThre ad.java:3691) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275):在java.lang.reflect.Method.invokeNative(本機方法) 9月10日至22日:35:06.315:ERROR/AndroidRuntime (3275):at java.lang.reflect.Method.invoke(Method.java:507) 10-22 09:35:06.315:ERROR/AndroidRuntime(3275):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .RUN(ZygoteInit.java:847) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 9月10日至22日:35:06.315:ERROR/AndroidRuntime(3275):at dalvik.system.NativeStart.main(Native Method) 10-22 09:35:06。320:ERROR /(18080):Dumpstate> /數據/日誌/ dumpstate_app_error
我的解決方案是否有效? – Carnal
謝謝,但沒有。現在,當我在幾秒鐘後打開主頁按鈕時,我的應用程序正在崩潰。任何其他想法? – goote
所以當你按下home按鈕時,你想破壞surfaceview?這是你問的嗎? – Carnal