Android Runnable不会重复

时间:2013-12-14 14:02:58

标签: java android multithreading runnable

我不想每隔X分钟更新一次网站列表。

阅读此主题后:nested postDelayed / Runnable / Handler Android

我决定使用Runnable + Handler而不是TimerTask。 不幸的是,我的Runnable不会第二次运行。它将刷新数据一次,然后没有任何反应。

我的onCreate()方法如下所示:

...    
fooWebsitesListView = (ListView) findViewById(R.id.fooWebsitesListView);

            fooWebsitesAdapter = new ArrayAdapter<fooWebsite>(
                    getApplicationContext(), R.layout.list_black_text,
                    R.id.list_content, websiteList);

            fooWebsitesListView.setAdapter(fooWebsitesAdapter);
            final fooWebsitesActivity fooWebsitesRefreshActivity = new fooWebsitesActivity();

            mHandler = new Handler();

            refreshfooWebsitesRunnable = new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    Log.d("scheduled task",
                            "---Scheduled Task: Refresh fooWebsites");
                    try {

                        fooWebsitesRefreshActivity.execute();
//mHandler.postDelayed(refreshfooWebsitesRunnable,3000);
                        mHandler.postDelayed(this, 3000);

                    } catch (Exception e) {
                        // Toast.makeText(getApplicationContext(),
                        // "Unable to receive Data", Toast.LENGTH_SHORT)
                        // .show();

                    }

                }

            };

            startRepeatingTask();
        }

        void startRepeatingTask() {
            refreshfooWebsitesRunnable.run();

        }

LOG:

12-14 14:56:47.624: D/scheduled task(7995): ---Scheduled Task: Refresh fooWebsites

此后一直没有机会。 UI线程工作正常,应用程序不会冻结或类似的东西。为什么我的runnable循环不会?

1 个答案:

答案 0 :(得分:1)

尝试拨打mHandler.post()而不是refreshfooWebsitesRunnable.run(),并在mHandler.removeCallbacks()方法的开头调用run()