2011-11-20 50 views
0

这段代码有什么问题?当我像这样实现它时,我的应用程序正常工作。Android thread.start()和runOnUiThread(thread);

public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     textOut = (EditText) findViewById(R.id.textout); 
     IPAddress = (EditText) findViewById(R.id.editTextIPAddress); 
     Button buttonSend = (Button) findViewById(R.id.send); 
     Button buttonSet = (Button) findViewById(R.id.set); 
     textIn = (TextView) findViewById(R.id.textin); 
     buttonSend.setOnClickListener(buttonSendOnClickListener); 
     buttonSet.setOnClickListener(buttonSetOnClickListener); 


     Thread myThread = new Thread() 
     { 
      public void run() 
      { 
       runClient(); 
      }// end method run 
     };// end myThread 
    }// end method onCreate 

但是当我这样实现它。它强制关闭:

​​3210

我能够尝试这一点,但它改变了程序的逻辑:

Button.OnClickListener buttonSetOnClickListener = new Button.OnClickListener() 
    { 

     @Override 
     public void onClick(View arg0) 
     { 
      runOnUiThread(myThread); 
     }// end method onClick 
    }; 

    Thread myThread = new Thread() 
    { 
     public void run() 
     { 
      runClient(); 
     }// end method run 
    };// end myThread 

第一代码运行MyThread的一次的onCreate()被调用。问题是我想在按下按钮后运行myThread。但是这样做会导致部队关闭。什么导致这个力量关闭,一旦按下按钮,我该怎么做才能运行线程?

+0

第一个没有Thread.start调用,这样就无法运行你的线程。它只是创建线程的一个实例。从onClick开始线程即可。但是你应该发布你的logcat消息,否则几乎不可能找出错误原因。 – slkorolev

+0

@slkorolev哦,是的,对不起,我忘了在这篇文章中添加myThread.start(),但是当我测试它时,我的程序中有这条线。我实际上不知道如何获得我的logcat消息。它如何完成日食? –

+0

您在Eclipse中有一个特殊的logcat视图。通常它位于代码窗口下。查找LogCat选项卡标题。如果你最大化它,你可以找到异常堆栈的错误消息。 – slkorolev

回答