2012-02-18 97 views
0

我編程的遊戲,它應該使用.startActivity活動應顯​​示分數,問題是,而不是正確顯示活動,我得到「棄用線程方法不支持「。我GOOGLE了這個錯誤,我刪除了我的應用程序中的所有Thread.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

銷燬,恢復,掛起是其他也被棄用的Thread方法。搜索他們。錯誤消息或堆棧跟蹤沒有告訴你這樣的棄用呼叫在哪裏完成?您的IDE或編譯器是否不會提醒您有關不推薦使用的方法? – 2012-02-18 13:56:32

+0

我沒有任何您在我的代碼中列出的方法。根據LogCat,問題出現在上面我的活動代碼中的onPause方法中。 – user1214302 2012-02-18 14:03:13

回答

0

我不能告訴你究竟是什麼問題,但我可以給你一些提示。

首先,您通常在啓動應用程序時創建一個線程,讓它運行直到您想退出遊戲(用戶按下BACK)。除此之外,你只能暫停你的遊戲線程,例如當您顯示其他活動或您的應用暫時中止時(用戶按HOME)。

如果你想結束你的遊戲線程,就讓它自然死亡。通常這樣的線程運行在某種循環中,所以你只要退出這個循環,線程就會自行終止。您通常在主線程的遊戲線程上調用join()來阻止它,直到遊戲線程死亡。

你不應該直接操縱線程的狀態。

1

使用Thread.currentThread()。interrupt();停止();

希望它有助於cya!