2012-02-18 6 views
0

スコアを表示するアクティビティに.startActivityを使用するはずのプログラム済みのゲームです。問題はアクティビティを正しく表示する代わりに"廃止予定スレッドメソッドはサポートされていません "。私はこのエラーを検出したと私はすべて私のアプリケーションでThread.stop()を削除したが、それは助けなかった。このタイプのエラーが発生する理由は他にもありますか?非推奨のスレッドメソッドはstop()メソッドなしではサポートされていません

public class GameFrame extends Activity implements OnTouchListener, OnLossListener { 
Panel game; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    Display d=getWindowManager().getDefaultDisplay(); 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    Point p=new Point(d.getWidth(),d.getHeight()); 
    game=new Panel(this,p); 
    setContentView(game); 
    game.setOnTouchListener(this); 
    game.setOnLossListener(this); 
} 
public boolean onKeyDown (int kc,KeyEvent ke){ 
    if (kc==23){ 
     game.shoot(); 
    } 
    return true; 
} 
public void onPause(){ 
    super.onPause(); 
    game.thread.setState(false); 
    game.mech.setState(false); 
    this.finish(); 
} 
@Override 
public boolean onTouch(View v, MotionEvent me) { 
    if (v.equals(game)){ 
     game.setPosOfPlane((int)me.getX()); 
    } 
    return true; 
} 
@Override 
public void lost(int score) { 
    Intent i=new Intent (this,EndGame.class); 
    i.putExtra("score",score+""); 
    startActivity (i); 
} 

}

+0

destroy、resume、suspend他のスレッドメソッドも廃止予定です。それらを検索してください。このような非推奨の呼び出しがどこで行われたのか、エラーメッセージやスタックトレースからはわかりません。あなたのIDEまたはコンパイラは、廃止予定のメソッドの使用について警告していませんか? –

+0

自分のコードに記載されている方法のいずれも持っていません。 LogCatによると、問題は上の私のアクティビティコードにあるonPauseメソッドです。 – user1214302

答えて

0

私は正確に問題が何であるかを伝えることはできませんが、私はあなたにいくつかのヒントを与えることができます。

まず、アプリケーションを起動するときにスレッドを作成し、ゲームを終了するまで(ユーザーがBACKを押す)実行するようにします。それ以外はゲームスレッドを一時停止するだけです。別のアクティビティを表示しているとき、またはアプリが一時的に中断されているとき(ユーザーがHOMEを押したとき)

ゲームスレッドを終了したい場合は、自然に死ぬようにしてください。通常、このようなスレッドはある種のループで実行されるため、このループを終了するだけでスレッドは終了します。あなたは通常、メインスレッドからゲームスレッド上でjoin()を呼び出して、ゲームスレッドが終了するまでブロックします。

スレッドの状態を決して直接操作しないでください。

1

Thread.currentThread()。interrupt();を使用します。代わりにstop();

希望は、cyaに役立ちます。

関連する問題