0

ローディング画面を入れたいので、アクティビティをスレッド化しています

ロード画面を表示している間、アプリは最初にユーザーがログインしているかどうか、エラー画面がロードされていないかどうかを確認します。

私が持っているスレッドの最後に

handler.sendEmptyMessage(0);

私が持っているハンドラーのために

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        dataAdapter.notifyDataSetChanged();
        pd.dismiss();
        if (badkey==1)
        {
            reloginDlog().show();
        }
    }
    };

pd は進行状況ダイアログで、badkey は public int です。

プライベート Handler 行に、「この Handler クラスは静的である必要があります。そうしないと、リークが発生する可能性があります (MyActivity.1)」という警告が表示されます。

なぜこれが悪いのか、どうすれば修正できるのか誰か知っていますか?

4

1 に答える 1

0

むしろ sth のように試してください: (スレッドはハンドラに関連付けられており、初期化されたメッセージ ループが必要です -Looper.prepare()そして.loop()):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    new Thread(new Runnable() {

        @Override
        public void run() {

            Looper.prepare();

            handler = new Handler() {

                public void handleMessage(Message msg) {

                    // process incoming messages here
                    //...

                    //destroy message cue when no longer needed 
                    if(noMoreMessagesToHandle) {

                        Looper.myLooper().quit();
                    }
                }
            };

            Looper.loop();

        }

    }).start();
于 2012-07-10T21:19:08.503 に答える