1

アクティビティ内に、過去の静的な日付を取得し、を使用して相対文字列にフォーマットする非常に関数関数がありますDateUtils.getRelativeDateTimeString(したがって、「3分前」のようになり、に設定します。ただし、これを更新し続けTextViewたいTextViewアクティビティが開いている限り。

連続的に実行される(無限ループ)か、1秒ごとなどの短い間隔で実行される連続タスクを作成するにはどうすればよいですか。バックグラウンドサービスなどに入らずにこれを達成するにはどうすればよいですか?

4

2 に答える 2

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()

于 2012-10-07T21:43:59.470 に答える
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();

参照:Androidで実行可能なスレッドを実行する方法は?

スレッドを使用する場合は、アプリを一時停止または再開するときに、スレッドを適切に一時停止または再開するようにしてください。また、必要なデータを処理するために、アクティビティライフサイクルの最後に自分で終了することをお勧めします。

于 2012-10-07T21:16:34.493 に答える