Деятельность игнорирует дополнительные поля намерения - PullRequest
1 голос
/ 26 мая 2010

Например,

В ActivityA есть кнопка для создания Intent, который запустит ActivityB в новом задании, например:

Intent i = new Intent(this, ActivityB.class);
i.setData(Uri.parse("http://www.google.com"));
long timestamp = System.currentTimeMillis();
i.putExtra("ts", timestamp);
i.addFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.d(TAG, "Sending: " + timestamp);
startActivity(i);

Затем в методе ActivityB onResume () есть код для проверки метки времени:

long timestamp = getIntent().getExtras().getLong("ts");
Log.d(TAG, "Receiving: " + timestamp);

Теперь, когда я в первый раз вызываю ActivityB из ActivityA, я получаю следующие журналы:

Sending: 120006000
Receiving: 120006000

Затем, если я оставил ActivityB запущенным в фоновом режиме (нажав кнопку «Домой») и запустил ActivityA, а затем снова вызвал ActivityB, выдается следующее:

Sending: 120013000
Receiving: 120006000

Кажется, хотя ActivityB выходит на передний план с новым Намерением. Дополнительное поле в намерении осталось позади.

Это ошибка или предполагаемое поведение?

Ответы [ 2 ]

1 голос
/ 26 мая 2010

просто прочитайте документацию:

http://developer.android.com/reference/android/app/Activity.html#getIntent%28%29

getIntent () возвращает Intent, с которого началось действие. Если действие уже выполняется в фоновом режиме, то вы не запускаете действие B, а переносите его на передний план.

0 голосов
/ 26 мая 2010

Может быть, вы должны слушать onNewIntent, а не только onResume?

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