无限期地继续进行简单的重复文本更新

时间:2012-10-07 21:05:44

标签: android date textview recurrence

我在活动中有一个非常函数的函数,它在过去采用静态日期,使用DateUtils.getRelativeDateTimeString将其格式化为相对字符串(因此它变为“3分钟前”并将其设置为{ {1}}。但是,只要活动保持打开,我希望此TextView保持更新。

如何进行连续运行(无限循环)或在短时间内运行的连续任务 - 例如每秒。如何在不进入后台服务的情况下实现这一目标呢?

2 个答案:

答案 0 :(得分:1)

以下是使用AsyncTask

的示例
private class BackgroundCoversionTask extends AsyncTask< String, String, Void >{

    @Override
    protected Void doInBackground( String... params ) {

        while( !isCancelled() ){
            try {
                Thread.sleep( 1000 );
            } catch ( InterruptedException e ) {
                break;
            }

            //DateUtils.getRelativeDateTimeString( MainActivity.this, time, minResolution, transitionResolution, flags )
            // Do something right here
            publishProgress( Long.toString( System.currentTimeMillis() ) );

        }

        return null;
    }

    @Override
    protected void onProgressUpdate( String... values ) {
        super.onProgressUpdate( values );

        mTextView.setText( values[0] );
    }

}

然后,如果您要取消该任务,请致电cancel()

答案 1 :(得分:0)

只需在一个单独的线程上运行它。

Thread thread = new Thread()
{
    @Override
    public void run() {
        try {
            while(true) {
                sleep(1000);
                //Do your date update here
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

thread.start();

请参阅:How to run a Runnable thread in Android?

对于线程,请确保在应用暂停或恢复时,您适当地暂停或恢复线程。此外,为了处理您可能需要的任何数据,最好在活动生命周期结束时自行结束它们