У меня реальная проблема с использованием моего приложения, которое включает 2 процесса.Один процесс выполняет службу (p1), а другой - графический интерфейс (p2).
У меня есть класс в p2, который реализует использование объекта (iThing), который управляется пользовательской памятью (и его статической),Это должно быть похоже на эту реализацию ОС Android, которая уничтожает представления в любое время.
public class Connections{
public static int iGlobalCounter=0;
public static Object iThing;
public static void start(){
iGlobalCounter++;
Log.d("PROCESS", "UP: "+iGlobalCounter);
if (iGlobalCounter<=1){
//Create the object "iThing"
}
}
public static int stop(){
iGlobalCounter--;
Log.d("PROCESS", "DOWN: "+iGlobalCounter);
if (iGlobalCounter<=0){
//Destroy the object "iThing"
}
}
}
Основной графический интерфейс (в p2) запускает и останавливает переменную onCreate / onDestroy (для всех представлений)в моем приложении)
public class MyMainClass extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Connections.start();
}
@Override
public void onDestroy(){
super.onDestroy();
Connections.stop();
}
}
Наконец, в p1 у меня есть служба, которая также нуждается в переменной, поэтому он делает то же самое
public class MyMainService extends Service{
@Override
public void onCreate() {
super.onCreate();
Connections.start();
}
@Override
public void onDestroy(){
super.onDestroy();
Connections.stop();
}
}
Проблема в том, что если я использую толькоp2 (GUI), все идет хорошо, но когда я выполняю службу (в p1), счетчик увеличивается не с последнего состояния, а с 0, что приводит к уничтожению объекта при выходе из службы, а не из приложения.
если выполнить эту навигацию, я получу следующие счетчики: MyMainClass (1) -> OtherClass (2) -> AnotherClass (3) -> MyMainService ( 1)
Мой вопрос: есть ли способ иметь глобальную переменную с несколькими процессами?Похоже, что каждый процесс принимает свои статические переменные и не является «реальным статическим».Решением может быть использование SharedPreferences для сохранения состояния, но не очень хорошее решение, поскольку его не нужно сохранять при выходе из приложения.
Спасибо, PAU