ClassCastException при совместном использовании процесса в Android
Я создал 2 приложения для Android (Приложение A и Приложение B), которые используют один и тот же процесс и идентификатор пользователя. Я определил общую активность в обоих приложениях. Пространство имен и имя класса Generic Activity одинаковы в обоих приложениях, но содержимое отличается.
Таким образом, приложение А имеет
package com.company.ui;
public class GenericActivity extends Activity{
//some content
}
и приложение B имеет
package com.company.ui;
public class GenericActivity extends Activity{
//some different content
}
Сначала я запускаю приложение A, а затем приложение B запускается из приложения A. Я знаю, что, поскольку загрузчики классов обоих приложений различны, при запуске обоих приложений будет 2 копии класса Generic Activity, одна связана с каждым загрузчиком классов, который в свою очередь связан с каждым приложением. Все идет нормально.
Теперь я справляюсь как с приложением, так и принудительно убиваю Приложение A. Теперь я перезапускаю свое приложение A. В моем приложении AI есть фрагмент, в котором есть такой код
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = (GenericActivity) getActivity();
}
Теперь вот проблема. Я получаю исключение приведения класса здесь. После отладки я обнаружил, что он пытается привести его к Generic Activity приложения B, и, поскольку он загружается другим классом загрузчиком другого класса, он дает исключение приведения класса. Насколько я понимаю, когда я принудительно убил Приложение A и перезапустил его, он должен снова загрузить свою копию Generic Activity через загрузчик классов. Почему он пытается использовать универсальную активность приложения B?