Исправление утечек памяти в классе Handler - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь исправить утечки памяти с помощью класса Handler, и я использую код ссылки из этого блога , где слабая ссылка на активность используется в пользовательском классе Handler, а исполняемый код используется в handleMessage метод.

private static class MyHandler1 extends Handler {
                private final WeakReference<MainActivity> mActivity;

                public MyHandler1(MainActivity) {
                    mActivity = new WeakReference<MainActivity>(activity);
                }

                @Override
                public void handleMessage(Message msg) {
                    ProgressActivity activity = mActivity.get();
                    if (activity != null) {
                      activity.textView.setText(activity.getString(R.string.text_handler_2));
                      Intent i = new Intent(activity.getApplicationContext(), NewActivity.class);

                       activity.getApplicationContext().startActivity(i);
                    }
                }
            } 

    static final Runnable sRunnable = new Runnable() {
            @Override
            public void run() {

            }
        };

Код внутри handleMessage не выполняется, когда я использую handler.postDelayed(sRunnable, 6000); в моем методе onCreate (). Должен ли мой исполняемый код быть в статическом объекте Runnable и позволит ли это избежать утечки памяти? Также, если у меня есть разные объекты-обработчики, выполняющие разные исполняемые объектные коды, как мне управлять ими в handleMessage в одном классе Handler?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...