Android 当屏幕被锁定和解锁时,游戏冻结
我刚刚写了一些小游戏,问题是,每次我在游戏中锁定屏幕,然后解锁,游戏就会冻结。我不知道为什么,但它发生了 现在我想知道当屏幕被锁定时,我必须改变哪种方法才能将游戏设置为暂停或恢复 是否有类似onScreenLocked()或onScreenWake()的方法 我有三个类,mainactivity,它在自己的视图中添加了一个gameview。此gameview获得了一个游戏线程,该线程不断更新gameview本身 现在,当对mainactivity调用onPause()时,它将调用gameView.pause();方法 这就是这个方法(gameview.pause()): 当isPaused=true时,游戏会不断更新。如果不是,那么它就不是 当mainActivity上的onResume()调用gameView.resume()时;方法被调用,如下所示:Android 当屏幕被锁定和解锁时,游戏冻结,android,sleep,lockscreen,Android,Sleep,Lockscreen,我刚刚写了一些小游戏,问题是,每次我在游戏中锁定屏幕,然后解锁,游戏就会冻结。我不知道为什么,但它发生了 现在我想知道当屏幕被锁定时,我必须改变哪种方法才能将游戏设置为暂停或恢复 是否有类似onScreenLocked()或onScreenWake()的方法 我有三个类,mainactivity,它在自己的视图中添加了一个gameview。此gameview获得了一个游戏线程,该线程不断更新gameview本身 现在,当对mainactivity调用onPause()时,它将调用gameView
public void resume() {
gameThread = new GameThread(this);
gameThread.startThread();
isPaused = false;
}
是的,就是这样。
现在,当在游戏中按下home(主页)按钮时,它会暂停,当重新进入游戏时,它只会在结束的地方继续
但当按下锁定按钮,然后解锁屏幕时,我只是看到游戏冻结了,我不知道为什么
解锁屏幕时,我发现游戏线程不再运行。我不知道如何修复它,因为在添加一些时
gameThread.start();
游戏将崩溃。
但是为什么游戏线程在锁定屏幕时停止工作,而在离开游戏并重新进入游戏时工作正常?
编辑:
我刚发现我的问题。我的gameView代码如下所示:
public class GameView extends SurfaceView implements OnGestureListener{
public GameView(Context context, Activity activity) {
super(context);
gameThread = new GameThread(this);
init();
holder = getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
gameThread.setRunning(true);
gameThread.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
});
}
public void init() {
}
public void update() {
}
public void draw(Canvas canvas) {
super.draw(canvas);
}
public void pause() {
isPaused = true;
gameThread.setRunning(false);
}
public void resume() {
gameThread = new GameThread(this);
gameThread.startThread();
}
}
我发现
public void surfaceCreated(SurfaceHolder holder) {
gameThread.setRunning(true);
gameThread.start();
}
按下home键并重新进入游戏时,只需拨打电话即可,但在锁定屏幕并再次解锁时,不会呼叫。这就是线程无法启动的原因
现在我想知道如何手动调用此方法?您应该能够使用onPause()和onResume()。查看“活动生命周期”了解更多信息。onResume()和onPause()对我有效,但只有在按下home(主页)按钮并返回到app@user2410644-我认为我们需要更多关于您使用的框架类型的信息。它是用纯Android编写的,还是你在使用一个库来处理事情?纯Android,将把一些信息添加到我的原始postThen onPause中,即使手机被锁定,也应该调用它。添加游戏冻结时的任何日志。你怎么画?画布或OpenGL以及如何处理暂停/恢复。没有日志!这是奇怪的部分。在SurfaceView的画布上绘制,这就是游戏线程的用途。
public void surfaceCreated(SurfaceHolder holder) {
gameThread.setRunning(true);
gameThread.start();
}