通过锁定屏幕打开通知时,我遇到了一个奇怪的问题。这是我的应用程序的结构
MainActivity
- 应用的开放活动。NotificationActivity
- 用户点击通知时打开的活动。以下是我创建通知的方式
val mBuilder = NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon_background)
.setContentTitle("Title")
.setContentText("Content")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
val targetIntent = Intent(this, NotificationActivity::class.java)
val pendingContentIntent = PendingIntent.getActivity(
this, 10, targetIntent,
PendingIntent.FLAG_CANCEL_CURRENT
)
mBuilder.setContentIntent(pendingContentIntent)
val notificationManager = NotificationManagerCompat.from(this)
notificationManager.notify(id, mBuilder.build())
现在如果我在MainActivity
并按下主页按钮,然后我锁定了我的设备。点击锁定屏幕上的通知后,NotificationActivity
即会打开,但同时也会调用onResume()
MainActivity
方法。
以下是我使用命令
后取出的一些日志adb logcat -b events
04-27 12:13:14.360 1445 8699 I am_focused_stack: [0,1,5,moveTaskToFront]
04-27 12:13:14.360 1445 8699 I wm_task_moved: [840,1,16]
04-27 12:13:14.364 1445 8699 I am_pause_activity: [0,224827670,com.android.systemui/.recents.RecentsActivity]
04-27 12:13:14.366 1445 8699 I am_task_to_front: [0,840]
04-27 12:13:14.386 3189 3189 I am_on_paused_called: [0,com.android.systemui.recents.RecentsActivity,handlePauseActivity]
04-27 12:13:14.388 1445 8699 I am_set_resumed_activity: [0,com.packagename/com.activity.MainActivity,resumeTopActivityInnerLocked]
但是,如果我通过通知栏打开相同的通知,则onResume()
的{{1}}方法不会被调用。理想情况下,它也不应该从锁定屏幕调用,因为我只传递MainActivity
有什么方法可以避免调用NotificationActivity
onResume()
方法
PS-我不确定所有设备和所有操作系统版本都会出现此问题。我测试了安装了Android Oreo的OnePlus5设备和安装了Android 5的另一台Lenevo设备。