Intereting Posts
Разработчики этого приложения не настроили это приложение правильно для входа в Facebook? Как записывать аудио / голос в фоновом режиме непрерывно в Android? Управление кодом / сборкой для магазинов приложений Android (Google / Amazon / etc)? Как вы определяете задержку звука (AudioTrack) на Android? Передача Bitmap в другое действие заканчивается в RunTimeException Представить html-контент как динамические «страницы» Меню переполнения TextColor с AppCompat (с помощью Hardware Menu-Key) Передача данных из активности в диалоговый Предложения по выбору панели инструментов Автоматически регистрировать события жизненного цикла Android с помощью ActivityLifecycleCallbacks? Недопустимый нижний колонтитул Listview Как сделать приложения Android 4.0 обратно совместимыми? Как дать синий контур для редактирования текстового андроида? CheckBoxPreference с собственным макетом После обновления Android на Nexus до 4.2.2 Eclipse показывает целевую неизвестность для устройства?

Загрузка / переопределение пользовательских классов для Android-классов

Основная цель – переопределить системный класс Android (Activity, View и т. Д.) С моей собственной реализацией.

http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

ClassLoader для загрузки пользовательского класса реализуется, загружается несистемный класс (пользовательский класс).

Но когда я пытаюсь загрузить Activity с моей реализацией – он не загружается, потому что ClassLoader уже имеет этот класс в кеше:

/** * Returns the class with the specified name if it has already been loaded * by the virtual machine or {@code null} if it has not yet been loaded. * * @param className * the name of the class to look for. * @return the {@code Class} object or {@code null} if the requested class * has not been loaded. */ protected final Class<?> findLoadedClass(String className) { ClassLoader loader; if (this == BootClassLoader.getInstance()) loader = null; else loader = this; return VMClassLoader.findLoadedClass(loader, className); } 

Как я могу изменить загрузчик классов для ввода моего собственного класса вместо системы?

Solutions Collecting From Web of "Загрузка / переопределение пользовательских классов для Android-классов"

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

Идея состоит в том, чтобы написать некоторый C-код, который переопределяет низкоуровневый механизм загрузки классов и, таким образом, переопределяет способ выполнения метода. Надеюсь, это может помочь кому-то.

Когда класс загружается RootClassLoader, он не может быть загружен снова, если он сначала не выгружен. Однако разгрузка класса – это процесс, который автоматически управляется DVM. Меня тоже беспокоит та же проблема.