Я отлаживаю игру с Android-картой cocos2d-x. Он должен взаимодействовать с библиотекой сторонней организации, которая предоставляет некоторую общую услугу, например, вход в систему. В библиотеке будет отображаться полупрозрачный значок на моей игровой поверхности.'surfaceDestroyed callback +' without 'surfaceDestroyed callback -'
Тогда что-то не так произойдет, когда я прикоснусь к домашней кнопке в игре обратно на рабочий стол. И если я снова коснусь значка игры, появится последний снимок игры, но с ним нельзя будет взаимодействовать.
Обычно, когда я минимизировать игру, LogCat затмение будет печатать, как показано ниже:
01-29 09:13:21.493: D/SdkActivity(21533): ==onPause==
01-29 09:13:21.494: D/ActivityThread(21533): ACT-AM_ON_PAUSE_CALLED ActivityRecord{4227d568 [email protected] {org.cocos2dx.simplegame.uc/cn.uc.gamesdk.SdkActivity}}
01-29 09:13:21.504: D/ActivityThread(21533): ACT-PAUSE_ACTIVITY handled : 1/[email protected]
01-29 09:13:21.506: V/PhoneWindow(21533): DecorView setVisiblity: visibility = 4 ,Parent =ViewRoot{41eb1ab8 org.cocos2dx.simplegame.uc/org.cocos2dx.simplegame.uc.SimpleGame,ident = 0}, this =com.android.internal.policy.impl.PhoneWindow$DecorView{41da5790 I.E..... R....... 0,0-720,1280}
01-29 09:13:21.506: D/ActivityThread(21533): ACT-HIDE_WINDOW handled : 0/[email protected]
01-29 09:13:21.521: I/SurfaceView(21533): updateWindow -- onWindowVisibilityChanged, visibility = 4
01-29 09:13:21.521: I/SurfaceView(21533): Changes: creating=false format=false size=false visible=true left=false top=false mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=false
01-29 09:13:21.521: I/SurfaceView(21533): Cur surface: Surface(name=null)/@0x41da3990
01-29 09:13:21.526: I/SurfaceView(21533): New surface: Surface(name=null)/@0x41da3a60, vis=false, frame=Rect(0, 0 - 720, 1280)
01-29 09:13:21.526: I/SurfaceView(21533): Callback --> surfaceDestroyed
01-29 09:13:21.526: I/SurfaceView(21533): surfaceDestroyed callback +
01-29 09:13:21.526: I/SurfaceView(21533): surfaceDestroyed callback -
01-29 09:13:21.527: V/SurfaceView(21533): Layout: x=0 y=0 w=720 h=1280, frame=Rect(0, 0 - 720, 1280)
01-29 09:13:21.530: D/GraphicBuffer(21533): create handle(0x5de3b2c8) (w:720, h:1280, f:1)
01-29 09:13:21.532: D/OpenGLRenderer(21533): Flushing caches (mode 0)
01-29 09:13:21.532: D/GraphicBuffer(21533): close handle(0x626af840) (w:720 h:1280 f:1)
01-29 09:13:21.533: D/GraphicBuffer(21533): close handle(0x61ed99d8) (w:720 h:1280 f:1)
01-29 09:13:21.533: D/GraphicBuffer(21533): close handle(0x5de3b2c8) (w:720 h:1280 f:1)
01-29 09:13:21.542: I/SurfaceView(21533): updateWindow -- OnPreDrawListener, mHaveFrame = true
01-29 09:13:21.698: D/OpenGLRenderer(21533): Flushing caches (mode 0)
01-29 09:13:21.699: D/GraphicBuffer(21533): close handle(0x62879c20) (w:720 h:1280 f:1)
01-29 09:13:21.700: D/GraphicBuffer(21533): close handle(0x66fc8b40) (w:720 h:1280 f:1)
01-29 09:13:21.701: D/GraphicBuffer(21533): close handle(0x632cfc78) (w:720 h:1280 f:1)
01-29 09:13:21.702: D/GraphicBuffer(21533): close handle(0x632cff80) (w:720 h:1280 f:1)
01-29 09:13:21.718: W/IInputConnectionWrapper(21533): showStatusIcon on inactive InputConnection
01-29 09:13:21.731: I/SurfaceView(21533): updateWindow -- onWindowVisibilityChanged, visibility = 8
01-29 09:13:21.732: D/OpenGLRenderer(21533): Flushing caches (mode 0)
01-29 09:13:21.736: I/SurfaceView(21533): updateWindow -- OnPreDrawListener, mHaveFrame = true
01-29 09:13:21.737: D/OpenGLRenderer(21533): Flushing caches (mode 0)
...
01-29 09:13:22.162: I/SurfaceView(21533): updateWindow -- OnPreDrawListener, mHaveFrame = true
01-29 09:13:22.162: D/SdkActivity(21533): ==onSaveInstanceState==
01-29 09:13:22.163: D/SdkActivity(21533): ==onStop==
01-29 09:13:22.166: V/PhoneWindow(21533): DecorView setVisiblity: visibility = 4 ,Parent =ViewRoot{41d393e8 org.cocos2dx.simplegame.uc/cn.uc.gamesdk.SdkActivity,ident = 12}, this =com.android.internal.policy.impl.PhoneWindow$DecorView{421b4c40 I.E..... R....... 0,0-720,1280}
01-29 09:13:22.166: D/ActivityThread(21533): ACT-STOP_ACTIVITY_HIDE handled : 0/[email protected]
01-29 09:13:22.178: D/OpenGLRenderer(21533): Flushing caches (mode 0)
Но ненормально, то LogCat как ниже:
01-29 09:11:27.378: D/SdkActivity(21256): ==onSaveInstanceState==
01-29 09:11:27.378: D/SdkActivity(21256): ==onPause==
01-29 09:11:27.378: D/ActivityThread(21256): ACT-AM_ON_PAUSE_CALLED ActivityRecord{42028fb0 [email protected] {com.mf.sglm.uc/cn.uc.gamesdk.SdkActivity}}
01-29 09:11:27.390: D/ActivityThread(21256): ACT-PAUSE_ACTIVITY handled : 1/[email protected]
01-29 09:11:27.391: V/PhoneWindow(21256): DecorView setVisiblity: visibility = 4 ,Parent =ViewRoot{41eacbd8 com.mf.sglm.uc/com.mf.sglm.uc.SGLM,ident = 0}, this =com.android.internal.policy.impl.PhoneWindow$DecorView{41da0858 I.E..... R.....I. 0,0-720,1280}
01-29 09:11:27.392: D/ActivityThread(21256): ACT-HIDE_WINDOW handled : 0/[email protected]
01-29 09:11:27.394: I/SurfaceView(21256): updateWindow -- onWindowVisibilityChanged, visibility = 4
01-29 09:11:27.394: I/SurfaceView(21256): Changes: creating=false format=false size=false visible=true left=false top=false mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=false
01-29 09:11:27.394: I/SurfaceView(21256): Cur surface: Surface(name=null)/@0x41d9e8a0
01-29 09:11:27.399: I/SurfaceView(21256): New surface: Surface(name=null)/@0x41d9e970, vis=false, frame=Rect(0, 0 - 720, 1280)
01-29 09:11:27.399: I/SurfaceView(21256): Callback --> surfaceDestroyed
01-29 09:11:27.399: I/SurfaceView(21256): surfaceDestroyed callback +
Кажется, что 'surfaceDestroyed обратного вызова + и «surfaceDestroyed callback» - это пара. Но я не могу найти, что случилось, когда один из них пропустил ...