Я пытаюсь исправить утечки памяти с помощью класса 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?