Android 在某些设备上调用activity onCreate()时,应用程序崩溃
加载屏幕后,我们的应用程序在某些设备上崩溃。 它在我们的测试设备上运行平稳,因此我们不能向logcat提供错误。 所以唯一的问题是,调用onCreate方法后,我们的应用程序在某些设备上崩溃Android 在某些设备上调用activity onCreate()时,应用程序崩溃,android,methods,crash,device,oncreate,Android,Methods,Crash,Device,Oncreate,加载屏幕后,我们的应用程序在某些设备上崩溃。 它在我们的测试设备上运行平稳,因此我们不能向logcat提供错误。 所以唯一的问题是,调用onCreate方法后,我们的应用程序在某些设备上崩溃 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
screenWidth = size.x;
screenHeight = size.y;
screenSizeAverage = (screenWidth + screenHeight) / 2;
this.gameStatus = 5;
this.isEnemiesStarted = false;
this.score = 0;
this.playerPos = 0;
prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
bestScore = prefs.getInt("key", 0);
gameView = new GameView(this.getApplicationContext(), this);
gameView.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
if(gameStatus == 1){
if(isEnemiesStarted == false){
isEnemiesStarted = true;
}
if(event.getX() < screenWidth / 2 && event.getY() < screenHeight / 2) {
if(playerPos != 1){
gameView.setPlayerPos(screenSizeAverage / 8, screenSizeAverage / 8);
playerPos = 1;
score++;
gameView.playSound(1);
}
}
else if(event.getX() > screenWidth / 2 && event.getY() < screenHeight / 2) {
if(playerPos != 2){
gameView.setPlayerPos(screenWidth - screenSizeAverage / 8 - gameView.getPlayerWidth(), screenSizeAverage / 8);
playerPos = 2;
score++;
gameView.playSound(1);
}
}
else if(event.getX() < screenWidth / 2 && event.getY() > screenHeight / 2) {
if(playerPos != 3){
gameView.setPlayerPos(screenSizeAverage / 8, screenHeight - screenSizeAverage / 8 - gameView.getPlayerWidth());
playerPos = 3;
score++;
gameView.playSound(1);
}
}
else if(event.getX() > screenWidth / 2 && event.getY() > screenHeight / 2) {
if(playerPos != 4){
gameView.setPlayerPos(screenWidth - screenSizeAverage / 8 - gameView.getPlayerWidth(), screenHeight - screenSizeAverage / 8 - gameView.getPlayerWidth());
playerPos = 4;
score++;
gameView.playSound(1);
}
}
}
}
else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
if(gameStatus == 3){
if(gameView.getLoadStatus() == 2){
gameView.closeGameOver();
gameView.playSound(2);
}
}
else if(gameStatus == 4){
if(gameView.getLoadStatus() == 1){
gameView.setBestScore(bestScore);
gameView.setLoadStatus(2);
} else if(gameView.getLoadStatus() == 2){
gameView.restartGame();
gameView.setLoadStatus(0);
gameView.playSound(2);
}
}
}
return true;
}
});
setContentView(gameView);
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
WindowManager wm=(WindowManager)this.getSystemService(Context.WINDOW\u服务);
Display Display=wm.getDefaultDisplay();
点大小=新点();
display.getSize(size);
屏幕宽度=大小x;
屏幕高度=尺寸y;
screenSizeAverage=(屏幕宽度+屏幕高度)/2;
这个.gameStatus=5;
this.isEnemiesStarted=false;
这个分数=0;
this.playerPos=0;
prefs=this.getSharedReferences(“MyPrefsky”,Context.MODE\u PRIVATE);
bestScore=prefs.getInt(“键”,0);
gameView=新gameView(this.getApplicationContext(),this);
gameView.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
if(event.getAction()==android.view.MotionEvent.ACTION\u向下){
如果(游戏状态==1){
如果(ISenemieStarted==false){
IsenemiesStart=true;
}
if(event.getX()screenWidth/2&&event.getY()screenHeight/2){
如果(playerPos!=3){
setPlayerPos(screenSizeAverage/8,screenSizeAverage/8-gameView.getPlayerWidth());
playerPos=3;
分数++;
gameView.playSound(1);
}
}
else if(event.getX()>screenWidth/2&&event.getY()>screenHeight/2){
如果(playerPos!=4){
gameView.setPlayerPos(屏幕宽度-screenSizeAverage/8-gameView.getPlayerWidth(),屏幕高度-screenSizeAverage/8-gameView.getPlayerWidth());
playerPos=4;
分数++;
gameView.playSound(1);
}
}
}
}
else if(event.getAction()==android.view.MotionEvent.ACTION\u UP){
如果(游戏状态==3){
如果(gameView.getLoadStatus()==2){
gameView.closeGameOver();
gameView.playSound(2);
}
}
否则如果(游戏状态==4){
如果(gameView.getLoadStatus()==1){
gameView.setBestScore(最佳分数);
gameView.setLoadStatus(2);
}else if(gameView.getLoadStatus()==2){
gameView.restartGame();
gameView.setLoadStatus(0);
gameView.playSound(2);
}
}
}
返回true;
}
});
setContentView(gameView);
我在三星Galaxy S4 Mini上也有同样的问题。问题是
display.getSize(size);
我不知道为什么。对我来说
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
有效。显示OnCreate的代码如果没有错误日志,请粘贴导入。使用ACRA获取崩溃日志。