线程无法在android中启动

时间:2016-11-08 03:23:49

标签: android

我的Thread存在问题,线程没有启动,我也不知道它为什么不运行。

这是我的代码,

public class MainActivity extends AppCompatActivity {

TextView tv;
int seg=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv=(TextView)findViewById(R.id.reloj);
}

boolean on=false;
public void inicia(View view){
    if(!on){
        tiempo.start();
        on=true;
    }

}

Thread tiempo=new Thread(){
    public void run(){
        try{
            while(true){
                Thread.sleep(1000);
                seg++;
                tv.setText(seg+"");
            }

        }catch (InterruptedException e){

        }
    }
};

}

打印此错误 只有创建视图层次结构的原始线程才能触及其视图。

3 个答案:

答案 0 :(得分:0)

首先我假设您在xml中设置onClick以将inicia设置为按钮的单击处理程序。否则,这是你问题的一部分。

你的线程处于无限循环中。 while循环只有在出于某种原因发生中断时才会退出,并且没有任何东西会这样做。如果你想每秒发布一次accio,帖子需要在while循环中。

答案 1 :(得分:0)

while(true){ Thread.sleep(1000); }

线程一直在睡觉。

答案 2 :(得分:0)

好的,试试吧,

将从主循环器线程创建线程。因此,您的textview将仅由mainlooper线程更新。当您创建线程时,它将开始成为另一个线程。它与MainLooper线程无关,您必须使用Handler类更新textView或使用Asynctask或runOnUiThread方法更新文本视图。

   runOnUiThread(new Runnable() {
        @Override
        public void run() {
            textview.settext("");
        }
    });