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?

0 ответов

Другие вопросы по тегам