Я думаю, возможно, что в стеке создается новое действие, когда вы запускаете ожидающее намерение. Настройте свою активность так, чтобы она не создавала новую активность через режим запуска, для которого задано значение singleTask или singleInstance.
Вот пример настройки, которую я использовал для действия:
<activity
android:name="com.zakimak.HomeScreenActivity"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:launchMode="singleTask" />
Затем построение отложенного намерения выглядит следующим образом:
Intent resultIntent = new Intent(context, HomeScreenActivity.class);
// The request code 24601 uniquely identifies the notification generated
// by the application. As an application may generate several having
//different codes to identify each. CAUTION: It's value should be greater than 0
//.i.e. RESULT_FIRST_USER+
PendingIntent resultPendingIntent = PendingIntent.getActivity(context,
24601, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher).setContentTitle("Title")
.setContentText("Bla bla").setOngoing(true)
.setTicker("Bla bla is running").setAutoCancel(false)
.setContentIntent(resultPendingIntent).build();
Шаг 1: Я запускаю приложение и показываю HomeScreenActivity. Затем я перетаскиваю панель уведомлений и нажимаю на уведомление. Он открывает Activity и вызываются следующие методы обратного вызова: onPause, а затем onResume. onPause вызывается, потому что активность все еще может быть видна под ящиком.
Шаг 2: Я запускаю приложение и показываю HomeScreenActivity и нажимаю Home или запускаю другое действие, затем вызывается onStop. Затем я перетаскиваю панель уведомлений и нажимаю на уведомление. Он открывает действие, и вызываются следующие методы обратного вызова: onStart, а затем onResume.
В обоих случаях onCreate вызывается только один раз, когда Activity запускается для первой итерации. Проверено в эмуляторе.
В некоторых случаях, когда ваше устройство сильно загружено или пытается экономить энергию, возможно, Android может остановить процесс.
person
ZakiMak
schedule
25.01.2015