2

コンテキストが必要なタイマーを使用しています。今、私は次のコードを持っています:

   mContext=context;
    mEventID=eventID;
    CountDownTimer cdTimer = new CountDownTimer(20000, 1000) {
        public void onTick(long millisUntilFinished) {
            // Do nothing onTick... Sorry
        }
        public void onFinish() {
            int deletedRows = mContext.getContentResolver().delete()
            // ..rest of code
        }
    };
    cdTimer.start();

これは安全に使用できますか、それともここでコンテキストを漏らしている可能性がありますか? ところで。これは にありbroadcastreceiverます。

4

1 に答える 1

2

コンテキストをスレッドに渡すのではなく、親の名前で参照してください。

このようなもの

class MyClass {
...
CountDownTimer cdTimer = new CountDownTimer(20000, 1000) {
        public void onTick(long millisUntilFinished) {
            // Do nothing onTick... Sorry
        }
        public void onFinish() {
            int deletedRows = myClass.this.context.getContentResolver().delete()
            // ..rest of code
        }
    };

...

}

したがって、ブロードキャスト レシーバーの名前でコンテキストを呼び出す必要があるでしょう。例:がクラスのメンバーであるとMyReceiver.this.context仮定します。context

于 2010-07-19T10:42:25.993 に答える