Java SurfaceView帧速率非常低
当使用SurfaceView时,我的速度大约为6 FPS,而我几乎什么都没画 我只是在画一种颜色。所以在几乎没有绘图操作的情况下,我得到了6 fps,这是非常可怕的 但是需要注意的一点是,我使用的是emulatorgenymotion仿真器,还没有在真正的设备上进行过尝试。然而,即使有一个模拟器,当我什么都不画的时候,我也应该得到超过6fps的速度 下面是我未包含的代码导入语句:Java SurfaceView帧速率非常低,java,android,render,surfaceview,Java,Android,Render,Surfaceview,当使用SurfaceView时,我的速度大约为6 FPS,而我几乎什么都没画 我只是在画一种颜色。所以在几乎没有绘图操作的情况下,我得到了6 fps,这是非常可怕的 但是需要注意的一点是,我使用的是emulatorgenymotion仿真器,还没有在真正的设备上进行过尝试。然而,即使有一个模拟器,当我什么都不画的时候,我也应该得到超过6fps的速度 下面是我未包含的代码导入语句: //Activity class which starts the SurfaceView public class
//Activity class which starts the SurfaceView
public class MainActivity extends Activity {
SView surfaceView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
surfaceView = new SView(this);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(surfaceView);
}
}
//SurfaceView class which draws everything in another thread
class SView extends SurfaceView implements SurfaceHolder.Callback{
SurfaceHolder holder;
Canvas mainCanvas;
Paint mainPaint;
int width;
long start, end, fps;
public SView(Context context) {
super(context);
holder = getHolder();
holder.addCallback(this);
mainPaint = new Paint();
mainPaint.setColor(Color.BLACK);
fps = 0;
}
public void surfaceCreated(SurfaceHolder holder) {
new Thread(){
public void run() {
start = System.currentTimeMillis();
while (true) {
end = System.currentTimeMillis();
if ((end - start) >= 1000) {
Log.d("PERSONAL", "FPS: " + fps + " milliseconds " + Long.toString(end - start));
start = System.currentTimeMillis();
fps = 0;
}
customDraw();
}
}
}.start();
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
public void customDraw(){
mainCanvas = holder.lockCanvas();
mainCanvas.drawRGB(0,150,0);
fps++;
holder.unlockCanvasAndPost(mainCanvas);
}
}
因此,我的问题是,如何解决fps如此糟糕的问题?您确定在模拟器上获得的fps应该超过6 fps吗?您是否检查过emulator中可能的配置选项?例如硬件加速?你能在真正的设备上试用吗?不,实际上我不确定。当我可以的时候,我会在真正的设备上试用。我只是希望已经用模拟器试过的人能给我一些启示。试着看看这个,真的很抱歉给大家带来这么多麻烦,我刚在一台真正的设备上试过,获得了大约50-60 fps。但是如果我可以的话,有时候会有很大的变化,从48到59,这正常吗?感谢和抱歉againIt的正常运行取决于设备的速度和您触摸的像素数。Grafika中的多曲面测试有一个弹跳功能,用于练习软件渲染;在Nexus10上它不能达到60帧/秒,在Nexus5上它很容易达到。