2012-04-10 19 views
1

アンドロイド用のゲームを開発しています。ウェブバナー広告用のウェブビューを表示するためのダイアログを実装しようとしています。 (私は自分の開発にcocos2dを使用しています)。静的メソッド広告()を使用して静的にダイアログを開きます。しかし、これをしてから、私は問題を開始し始めた。Android Appが2回目の起動時にフリーズする

初めて起動すると正常に動作しますが、アプリケーションを閉じて再度開くと、「開く」画面が開始されますが、再生されずにフェードインやフェードアウトが実行されたり、メニュー画面に進みます。 (広告()メソッドがある)打ち上げに使用された最初のシーンOpenscreen-

package wingdev.defence; 

import java.util.Timer; 
import java.util.TimerTask; 
import org.cocos2d.layers.CCScene; 
import org.cocos2d.nodes.CCDirector; 
import org.cocos2d.opengl.CCGLSurfaceView; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.webkit.WebView; 
import android.widget.Button; 

public class DefenceActivity extends Activity{ 
     protected CCGLSurfaceView _glSurfaceView; 
     public static int highscore = 0; 
     public static int mode= Activity.MODE_PRIVATE; 
     public static SharedPreferences mySharedPreferences ; 
     public static String CurrentLevel = ""; 
     public static boolean firstlaunch=true; 
     public static int screenforchoice = 0; 
     public static boolean choicemade=false; 
     public static boolean choice=false; 
     public static DefenceActivity context; 

      @Override 
        public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
      _glSurfaceView = new CCGLSurfaceView(this); 
      setContentView(_glSurfaceView); 
      CCScene scene = OpenScreen.scene(); 
      CCDirector.sharedDirector().runWithScene(scene); 
     } 

     @Override 

     public void onStart() 

     { 
      super.onStart(); 
      CCDirector.sharedDirector().attachInView(_glSurfaceView); 
      CCDirector.sharedDirector().setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft); 

      CCDirector.sharedDirector().setAnimationInterval(1.0f/60.0f); 
      mySharedPreferences=getSharedPreferences("HighScore",mode); 
      highscore= mySharedPreferences.getInt("HighScore",0); 
      SharedPreferences.Editor editor= mySharedPreferences.edit(); 
       editor.remove("HighScore"); 
       editor.putInt("HighScore", highscore); 
       editor.commit(); 
       CCScene scene = OpenScreen.scene(); 
      CCDirector.sharedDirector().runWithScene(scene); 
      Config.context = this; 
      context = this; 
      } 
     public void startgame() 
      { 
      CCDirector.sharedDirector().attachInView(_glSurfaceView); 

      CCDirector.sharedDirector().setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft);; 

      CCDirector.sharedDirector().setAnimationInterval(1.0f/60.0f); 

      CCScene scene = GameLayerSurvival.scene(); 
      CCDirector.sharedDirector().runWithScene(scene); 

      } 
     @Override 
     public void onPause() 
     { 
      super.onPause(); 
      CCDirector.sharedDirector().pause(); 
     } 

     @Override 
     public void onResume() 
     { 
      super.onResume(); 
     } 
     @Override 
     public void onStop() 
     { 
      super.onStop(); 
      finish(); 

      CCDirector.sharedDirector().end(); 
     } 
     static public void newhighscore() 
     {if(GameLayerSurvival.score>highscore){ 
     highscore=GameLayerSurvival.score; 
     } 
     SharedPreferences.Editor editor= mySharedPreferences.edit(); 
     editor.remove("HighScore"); 
     editor.putInt("HighScore", highscore); 
     editor.commit(); 
     } 

     public static void ads(){ 
     context.runOnUiThread(new Runnable() { 
     public void run() { 
     final Dialog dialog = new Dialog(context); 
     dialog.setContentView(R.layout.main); 
     dialog.setTitle("Advert"); 
     dialog.setCancelable(true); 
     WebView mWebView = (WebView) dialog.findViewById(R.id.webbanner); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadUrl("http://www.example.co.uk/"); 
     Button bc_btn1 = (Button) dialog.findViewById(R.id.button1); 
     bc_btn1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v){ 
       killDialog(dialog); 
      } 
     }); 
     dialog.show(); 
      } 
     }); 
     } 
     public static void killDialog(Dialog dialog){ 
      dialog.cancel(); 
     } 
} 

package wingdev.defence; 

import org.cocos2d.actions.instant.CCCallFunc; 
import org.cocos2d.actions.interval.CCDelayTime; 
import org.cocos2d.actions.interval.CCFadeIn; 
import org.cocos2d.actions.interval.CCFadeOut; 
import org.cocos2d.actions.interval.CCSequence; 
import org.cocos2d.layers.CCColorLayer; 
import org.cocos2d.layers.CCScene; 
import org.cocos2d.nodes.CCDirector; 
import org.cocos2d.nodes.CCLabel; 
import org.cocos2d.nodes.CCSprite; 
import org.cocos2d.types.CGSize; 
import org.cocos2d.types.ccColor4B; 

public class OpenScreen extends CCColorLayer { 

CCLabel _start; 
CCLabel _easy; 
CCLabel _normal; 
CCLabel _highscore; 
CCLabel _howto; 
CCLabel _hard; 
CCLabel _reset; 
CCSprite wingdev = CCSprite.sprite("wingdevpresents.png"); 
CCSprite darkorange = CCSprite.sprite("PirateTea.png"); 
CCSprite plane = CCSprite.sprite("plane.png"); 
CCSprite back2 = CCSprite.sprite("black.png"); 
public static CCScene scene() 
{ 
    // 
    CCScene scene = CCScene.node(); 
    CCColorLayer layer = new OpenScreen(ccColor4B.ccc4(255, 255, 255, 255)); 
    scene.addChild(layer); 

    return scene; 
} 
protected OpenScreen(ccColor4B color) { 
super(color); 
CGSize winSize = CCDirector.sharedDirector().displaySize(); 
this.setIsTouchEnabled(true); 
back2.setPosition(winSize.width/2.0f, winSize.height/2.0f); 
back2.setScaleX(winSize.width/back2.getContentSize().width); 
back2.setScaleY(winSize.height/back2.getContentSize().height); 
addChild(back2); 
wingdev.setPosition(winSize.width/2.0f, winSize.height/2.0f); 
wingdev.setScaleX(winSize.width/wingdev.getContentSize().width); 
wingdev.setScaleY(winSize.height/wingdev.getContentSize().height); 
addChild(wingdev); 
wingdev.runAction(CCSequence.actions(CCFadeIn.action(1.0f),CCDelayTime.action(2.0f),CCFadeOut.action(1.0f), CCCallFunc.action(this,"openscreen2"))); 
} 
public void openscreen() 
{ 
    CCDirector.sharedDirector().replaceScene(Menu.scene()); 
} 
public void openscreen2(){ 
    CGSize winSize = CCDirector.sharedDirector().displaySize(); 
    removeChild(wingdev,true); 
    darkorange.setPosition(winSize.width/2.0f, winSize.height/2.0f); 
    darkorange.setScaleX(winSize.width/darkorange.getContentSize().width); 
    darkorange.setScaleY(winSize.height/darkorange.getContentSize().height); 
    addChild(darkorange); 
     darkorange.runAction(CCSequence.actions(CCFadeIn.action(1.0f),CCDelayTime.action(2.0f),CCFadeOut.action(1.0f),CCCallFunc.action(this,"openscreen"))); 
} 
} 

私が間違っているつもりだ理解する上で任意のヘルプは非常に高く評価されるだろう

活動!アプリが殺されていない場合

+0

ああ、それを固定しているように見えますlogcat – WingDev

答えて

2

あなたは私はあなたがonResume(で再度起動する必要があると思う

@Override 
public void onPause() 
{ 
    super.onPause(); 
    CCDirector.sharedDirector().pause(); 
} 

であなたのCCDirectorを一時停止)

@Override 
public void onResume() 
{ 
    super.onResume(); 
    CCDirector.sharedDirector().resume(); 
} 

ONSTART()が呼び出されません。

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

+0

に現れてエラーがない、ありがとう! – WingDev