当使用以下代码:通知应用程序被关闭并重新打开与通知后没有被调用
public class MainActivity extends AppCompatActivity {
private final static AtomicInteger notificationId = new AtomicInteger(0);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.notif)
.setColor(ContextCompat.getColor(this, R.color.colorPrimary))
.setContentTitle("Request Received")
.setContentText("new Notif")
.setAutoCancel(true)
.setDefaults(DEFAULT_LIGHTS);
mBuilder.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_NO_CREATE));
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(notificationId.incrementAndGet(), mBuilder.build());
}
}
下面的用户行为创建不一致的方式来通知:
- 用户打开应用程序,会出现一个新的通知。
- 用户关闭应用程序。
- 用户单击通知。
- 创建新通知并打开应用程序。
- 用户单击通知(当应用程序打开时,如果应用程序关闭,则通知按预期行为)。
- 没有任何反应。以下日志消息是可见的:02-28 14:09:15.966 840-2273 /? I/ActivityManager:从uid 10093开始u0 {cmp = app.myapplication/.MainActivity} from pid -1 on display 0 02-28 14:09:15.966 840-2273 /? W/ActivityManager:从非活动上下文调用的startActivity;强制Intent.FLAG_ACTIVITY_NEW_TASK用于:Intent {cmp = app.myapplication/.MainActivity},这与Activity当前处于打开状态无关。
在我的代码中是否有导致此行为的东西? 预期这种行为?
此外,我想提以下使用情况给出了预期的通知行为:
- 用户打开应用程序时,会出现一个新的通知。
- 用户单击通知。
- 创建一个新通知并打开MainActivity。 - >转到步骤2。
此行为是在Android 5和6显而易见的,但在Android 7.
在Manifest中为MainActivity'android:launchMode'定义了什么值? –
我没有定义它,因为它是我相信的“标准”。根据上面列出的日志消息,它认为它正在实例化一项新任务。 –
[不是](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK) –