Что делает значение переменной пустым или возвращается к значению инициализации в жизненном цикле - PullRequest
0 голосов
/ 29 октября 2019

Мне просто интересно, что заставляет значение внутри некоторой переменной снова становиться пустым или возвращаться к своему первоначальному значению в жизненном цикле Android.

Сначала давайте посмотрим, как я создаю переменную:

public class myData {
 public static String myCode = "";

 public static String getData(String Choice) {
  String theData = "";
  if ("Code".equals(Choice) {
   theData = myCode;
  }

  return myCode;
 }

 public static void setData(String setData,String Choice) {

  if ("Code".equals(Choice) {
   myData.myCode = setData;
  } 
 }
}

Если я хочу заполнить переменную, я обычно делаю это:

myData.setData("value of variable","Code");

И если я хочу получить значение переменной, я обычно делаю это:

myData.getData("Code");

Я просто хочу знать, что делает мою переменную внутри жизненного цикла Android, конечно, исключая, когда приложение закрывается.

Я должен попытаться войти и показать значение в onstart, oncreate, onresume и onrestart. И все они по-прежнему имеют значение в моей переменной без изменений.

Мой клиент всегда говорит мне, что мое приложение иногда выходит из строя при открытии какой-либо операции. Я также спрашиваю, делали ли они что-то во время использования моего приложения,

некоторые из них отвечают, что приложение аварийно завершает работу после получения телефонного звонка, а когда телефонный звонок заканчивается, приложение запускается с ошибкой.

некоторые из них также сказали, что, когда они открывают приложение, а затем бездействуют, не закрывая приложение, пока телефон не станет черным экраном, и когда они снова откроют его, приложение выйдет из строя.

После того, как я проверил журнал, проблема заключалась в том, что переменная стала пустой. Вот почему я хочу знать, есть ли другие возможности, которые делают значение внутри переменной пустым?

1 Ответ

0 голосов
/ 02 ноября 2019

Как сказал Джон Лорд, на младших устройствах переменные могут снова вернуться к своему начальному значению, если недостаточно памяти.

Так что для дальнейшего использования я использую общее предпочтение, чтобы противостоять ему, вотМоя структура для извлечения данных:

public class myActivity extends AppCompatActivity {

  String myCode = "";

  protected void onCreate(Bundle savedInstanceState) {
   ....
     SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("myData", Context.MODE_PRIVATE);
     myCode = sharedPreferences.getString("Code",null);
   ....
  }

  @Override
  protected void onResume() {
        super.onResume();
        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("myData", Context.MODE_PRIVATE);
        myCode = sharedPreferences.getString("Code",null);
  }


}

И вот как я устанавливаю данные:

SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("myData",Context.MODE_PRIVATE);

sharedPreferences.edit().putString("Code","Hello World").apply();

Я надеюсь, что это будет полезно для тех, кто хочет искать то же самое

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