在不间断线程上显示消息

时间:2014-04-16 15:41:32

标签: android multithreading

以下代码位于android活动类中。 当应用程序处于活动状态时,项目需要一个不间断的线程,当应用程序处于活动/关闭状态时,该项目需要停止。

我预计会在logCat中看到一个不停的“Hello World”消息显示。但是,我看到一次 Hello World messgae。 我的代码有什么不对,所以我能够看到一个不停的“Hello World”

希望有人建议。感谢

@Override
protected void onStart(){
    super.onStart();
    Log.e("onStart","beforeStart");
    new HttpRequestTask().execute();
    Log.e("onStart","Start");
    this.pickButtonThread();

}
    private void pickButtonThread(){
    new Thread() {
        @Override
        public void run() {
           try {
                    // code runs in a thread
                    PickerItemActivity.this.runOnUiThread(new Runnable() {
                     @Override
                    public void run() {
                         // code runs in a UI(main) thread
                         //isPickButtonEnableDisable();
                         //new HttpRequestTask().execute();
                         Log.e("pickButtonThread", "Hello World");

                    }
                 });
               } catch (final Exception ex) {
           }
        }
    }.start();
}

1 个答案:

答案 0 :(得分:2)

那是因为你的run()方法中没有任何循环,所以它只运行一次并退出。但是,声明无限循环并不是一个好主意,因为如果内存不足,Android OS可能会杀死它。

您可以使用Handler使用.postDelayed()方法每隔X秒发布一次消息。

private Handler mHandler = new Handler();

private Runnable mUpdateTimeTask = new Runnable() {
  public void run() {
    Log.e("pickButtonThread", "Hello World");
    mHandler.postDelayed(this, 1000);         // Every second
  }
};