【发布时间】:2014-08-29 06:22:37
【问题描述】:
我正在为 android 编写游戏。我运行游戏没有问题,但发生了一些奇怪的事情
经过一些测试,我发现 Activity.onPause() 方法是在游戏开始时被调用的!
据我所知,onPause() 不应该在应用启动时调用,并且活动生命周期图证明了这一点
我放了一个 Log.d() , onResume() 方法被调用,然后 onPause() ,然后 onResume() 再次然后应用程序开始正常运行!
我没有放任何代码,因为我不知道问题出在哪里,我不确定这是否是我首先引起的问题,这种行为是否正常?或造成这种情况的原因
编辑:按照要求,活动的代码,应用程序中只有一个活动
package com.khallouf.agf;
import com.khallouf.agf.graphics.Graphics;
import com.khallouf.agf.graphics.Renderer;
import com.khallouf.agf.graphics.Screen;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.util.Log;
import android.view.Display;
import android.view.Window;
import android.view.WindowManager;
public abstract class Game extends Activity implements Runnable{
public Renderer renderer;
private Thread renderingThread ;
public Screen currentScreen;
public Graphics graphics;
public Bitmap extraSpaces;
public WakeLock wakeLock;
public int physicalScreenWidth;
public int physicalScreenLength;
enum Orientation {Landscape , Portrait}
public Orientation orientation = Orientation.Landscape;
public Game(Orientation o)
{
orientation = o;
}
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState)
{
//Setting the screen power and to full screen mode
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyGame");
// reading the physical screen size
Display display = getWindowManager().getDefaultDisplay();
physicalScreenLength = display.getHeight();
physicalScreenWidth = display.getWidth();
setOrientation(orientation);
Bitmap frameBuffer = createFrameBuffer();
graphics = new Graphics(getAssets(), getResources() , frameBuffer);
currentScreen = getStartingScreen();
renderer = new Renderer(this,frameBuffer);
setContentView(renderer);
renderingThread = new Thread(this);
renderingThread.start();
}
@Override
protected void onResume() {
super.onResume();
wakeLock.acquire();
currentScreen.resume();
//Starting the Thread
Log.d("TAG", "onResume entered");
}
@Override
protected void onPause() {
super.onPause();
wakeLock.release();
currentScreen.pause();
Log.d("TAG", "OnPause entered");
}
【问题讨论】:
-
根据生命周期图here 看起来有点奇怪。你介意发布活动代码吗?您是否正在开展多项活动?
-
您是否要求在活动中的任何地方更改方向?
-
我发布了一个编辑实际上是的,代码正在改变方向是这个问题吗?如果是这样,我可以修复方向以使活动不会暂停吗?
标签: android