Ваше решение не работает, потому что progressArray - это переменная экземпляра и при вызове
ListViewLoader lvl = new ListViewLoader
, которая создает новый экземпляр с установленным по умолчанию значением progressArray (в данном случае пустым).Создание progressArray static может быть быстрым решением, но имейте в виду, что вы будете сильно зависеть от порядка, в котором активность и служба будут обращаться к этому массиву, и он может быть сброшен, когда ваша активность будет уничтожена системой.Я настоятельно отговариваю вас от этого.Вместо этого рассмотрите возможность расширения класса приложения и реализации инициализации / доступа к списку там, например:
public class MyApplication extends Application {
public String progressArray[][] = new String[3][3];
}
Затем объявите его в AndroidManifest как:
<application
android:name=".MyApplication"
android:label="@string/app_name"
android:icon="@drawable/icon">
Затем обаиз ваших действий и услуг вы можете получить это, позвонив по номеру
((MyApplication) getApplication()).progressArray
Это единственный способ поделиться состоянием между действиями и службами в рамках одного приложения, о котором я знаю, и не включая отправку сообщений туда и обратно всохраняйте согласованность состояний (что может быть нетривиальной задачей) и не используйте синглтоны (, что, как вы, вероятно, знаете, ).
Но имейте в виду, что необходимость обмена изменяемыми даннымиэто может быть намеком на то, что ваш дизайн нуждается в улучшении.