Я создаю приложение с помощью функции переднего плана. Служба запускается в другом процессе и потоке.Переменные приложения в службе
Класс приложения имеет массив и имеет открытый метод getArray. Служба может получить доступ к приложению и методу вызова getArray.
Началось приложение, началось заполнение и обслуживание массива. Если приложение изменит массив, служба вернет массив, созданный при запуске приложения.
Как я могу обновить массив в сервисе?
на обслуживание:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(mThread != null)
mThread.interrupt();
mApplication = (Application) getApplication();
mTaskManager = mApplication.getTaskManager();
TaskArray lTasks = mTaskManager.getAll();
// always return same size
Log.d(mLogTag, "onStartCommand " + lTasks.size());
createThread();
mThread.start();
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
РЕЗУЛЬТАТ:
я нашел причину получить копию объекта Applicaton в моем приложении. Это происходит потому, что getApplicationContext() возвращает контекст одного глобального объекта приложения текущего процесса.
Для каждого процесса создается копия объекта приложения.
Итак, ваш вопрос заключается в том, как вы можете обновлять значения архаристов из службы? –
У вас может быть двусторонняя связь между клиентским приложением и удаленным сервисом с помощью Messenger –
Piyush Kukadiya, что вы имеете в виду в отношении Messenger? –