Как узнать, существует ли сейчас экземпляр Activity Activity? - PullRequest
0 голосов
/ 20 декабря 2011

Положение: При выходе из основного действия приложения для Android я хочу вызвать метод для живых экземпляров Activity, чтобы они очищали данные в массивах (, чтобы массивы еще не заполнялись при возврате в приложение ).

In MainActivity.java

// ...
@Override
public void onDestroy() {       
   super.onDestroy();
   // call method to clear an array list of its data
   // NullPointerException here if OtherActivity has no current living instance
   OtherActivity.clearAllData();        
}

In OtherActivity.java

// ...
private static ArrayList <String> myStringCollection;
// ...
public static void clearAllData(){
   if(myStringCollection.size() > 0){
     myStringCollection.clear();
     Log.d(TAG, "clearing data in OtherActivity");
   }

}

Вопрос: Как мы можем узнать, есть ли у OtherActivity текущий живой экземпляр, чтобы мы могли безопасно вызывать OtherActivity.clearAllData ()?

Что пытается сделать код: После выхода из приложения и возврата к нему в некоторых списках ArrayList все еще хранятся старые данные, и в результате новые данные (дубликаты) накладываются сверху.Этот код пытается очистить данные из ArrayLists в onDestroy () основного действия, чтобы при возвращении в приложение старые данные отсутствовали.

1 Ответ

2 голосов
/ 20 декабря 2011

Ваш код в настоящее время использует статические переменные.Статические переменные присоединяются к ClassLoader, а не к фактическому экземпляру класса.Это означает, что вам на самом деле не нужен действующий живой экземпляр, чтобы делать то, что вы делаете выше.Просто используйте проверку типа myStringCollection != null, чтобы гарантировать, что ваша переменная была инициализирована, и с вами все будет в порядке.

Примечание. Пожалуйста, уточните, действительно ли вы хотите получить доступ к нестатическим переменным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...