2013-04-19 3 views
2

Я создаю приложение, которое работает на моем Nexus 7 без проблем, а также на моей Galaxy S2. Теперь я тестировал его на Galaxy S3, но почему-то управление памятью намного более агрессивно. Если я нажму кнопку «Домой» и подожду несколько минут, OnCreate снова будет вызван, поэтому я предполагаю, что процесс был убит. Но если процесс будет убит, для этого конкретного приложения я хочу, чтобы он начал другое действие.Никогда не называть Create, когда процесс убит

Я мог бы использовать переопределение onStop и onPause, но это может вызвать некоторое нежелательное поведение, глядя на жизненный цикл активности. Если процесс не убит, нормально вернуться к активности.

Есть ли решение для этого?

+0

Это означает, что во втором OnCreate вы хотите начать другое действие, чем в первом OnCreate? –

ответ

1

Вы можете использовать savedInstanceState в вашем onCreate так:

if(savedInstanceState != null) { 
      //Toast.makeText(this, savedInstanceState.getString("message")+"--> ", Toast.LENGTH_LONG).show(); 
      Intent intent = new Intent(First.this, Second.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
      return; 
     } 
+0

Это делает трюк, поскольку savedInstanceState не имеет значения null, когда действие было уничтожено. Спасибо. –

+0

ur welcome :) хорошо +1 за хороший подробный вопрос –

2

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

Это может произойти либо из-за того, что операция завершается (кто-то по имени заканчивает() на ней, либо потому, что система временно уничтожает этот экземпляр действия, чтобы сэкономить место. Вы можете различать эти два сценария с isFinishing()