Android 使用计时器和处理程序处理UI线程

Android 使用计时器和处理程序处理UI线程,android,handler,runnable,timertask,Android,Handler,Runnable,Timertask,我在处理程序和timertask上有问题 当我完成处理程序以检查连接并在两个单独的线程上更新UI时,它就工作了。但是我想定期更新网络连接。也许每5秒钟执行一次。我用Timer.schedule来做这个。但应用程序失败了。 我不知道计时器是否不能进入UI线程 而且,我不知道是否有更好的方法来完成这样的多重任务。我急切地想知道是否有其他方法可以做到这一点,比如AsyncTask、Looper。多谢各位 公共类ViewPostTest扩展活动{ 私有字符串连接\u状态=null public void

我在处理程序和timertask上有问题 当我完成处理程序以检查连接并在两个单独的线程上更新UI时,它就工作了。但是我想定期更新网络连接。也许每5秒钟执行一次。我用Timer.schedule来做这个。但应用程序失败了。 我不知道计时器是否不能进入UI线程

而且,我不知道是否有更好的方法来完成这样的多重任务。我急切地想知道是否有其他方法可以做到这一点,比如AsyncTask、Looper。多谢各位

公共类ViewPostTest扩展活动{ 私有字符串连接\u状态=null

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final TextView timer_view = (TextView) findViewById(R.id.result);
    final Runnable runnable = new Runnable(){

        public void run() {
            // TODO Auto-generated method stub
            ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkinfo = manager.getActiveNetworkInfo();

            if(networkinfo.isConnected())
            {
                connection_status = "Connected";
            }
            else
            {
                connection_status = "Disconnected";
            }
            timer_view.post(new Runnable(){

                public void run() {
                    // TODO Auto-generated method stub
                    timer_view.setText(connection_status);
                }});

        }};
    TimerTask task1 = new TimerTask(){

        @Override
        public void run() {
            // TODO Auto-generated method stub
            Handler handler = new Handler();
            handler.post(runnable);
        }};
    Timer timer1 = new Timer();
    timer1.schedule(task1, 0,5000);


}

}

您可以使用
handler.postDelayed(runnable,5000)
在runnable内部,所以它每5秒调用一次。我已经尝试过了。但是它只调用一次,而不是每5秒调用一次。你在runnable内部调用它吗?它现在可以工作了。但是我不明白为什么在runnable内部调用可以工作。为什么它不在线程内部创建一个新线程并创建一个无限线程。所有这些都可以工作在一个线程中画笔-主线程。当您发布runnable时,它只会将其添加到队列中,并在同一线程上运行5秒钟。