2012-02-18 105 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!