UIHandler和Handler之间有什么区别

时间:2015-05-11 07:00:22

标签: android

我想在TextView中以续集顺序显示1到100之间的数字,并在打印每个数字后等待1秒。我也想用Android服务实现它。 我不知道UIHandler和Handler之间的区别。当我谷歌关于这个问题时,我得到的只是处理程序和线程之间的区别 请帮我解决这个问题, 提前致谢

private static final int SHOW_MESSAGE = 1;
private static final int m_cdelay = 1000;
private UIHandler m_cUIHandler;
public int m_cI= 0;
TextView m_cTextShow;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    m_cTextShow = (TextView) findViewById(R.id.textview1);
    for(m_cI=1; m_cI <= 100; m_cI++){
       //m_cUIHandler = new UIHandler();
       //m_cUIHandler.sendEmptyMessageDelayed(SHOW_MESSAGE, 1000);
       showMessage(m_cI);
    }
}

private void showMessage(int m_cI2) {
    for(m_cI=1; m_cI <= 100; m_cI++){
         m_cTextShow.setText(""+m_cI);
         new Thread(new Runnable() {
              @Override
              public void run() {
                  // TODO Auto-generated method stub
                  try {
                        Thread.sleep(m_cdelay);
                  } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                  }
              }}).start();
    }
}

@Override
protected void onResume() {
     super.onResume();
     startService(new Intent(this, NumberService.class));
}

public final class UIHandler extends Handler {
    @Override
    public void handleMessage(Message pObjMessage) {
        switch(pObjMessage.what) {
            case SHOW_MESSAGE:
                m_cTextShow.setText(""+m_cI);
                break;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你可以实际上重写你的代码,使其可能正常工作 请测试并回复。

public void showMessage(int number){
    runOnUiThread(new Runnable(){
        public void run() {
           //Write your number onto the screen 
        }
    });
}

protected void onCreate(Bundle savedInstanceState) {
    //Blablabla...
    for(m_cI=1; m_cI <= 100; m_cI++){
       //m_cUIHandler = new UIHandler();
       //m_cUIHandler.sendEmptyMessageDelayed(SHOW_MESSAGE, 1000);
       showMessage(m_cI);
       Thread.sleep(1000);
    }
}