简单背景:我已将最新的targetSdkVersion
更新为最新的Android 31。
我有一个服务类,在从通知托盘中点击通知后执行,它包含以下代码:
public class NotificationClickListener extends IntentService {
@Override
protected void onHandleIntent(Intent intent) {
Intent myIntentFromPendingIntent = intent;
//insert some necessary code
myIntentFromPendingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(myIntentFromPendingIntent); //this line here gets executed but the application or the activity wasn't opened after this line
}
收到消息后,可以按照以下代码创建PendingIntent。
PendingIntent contentIntent = PendingIntent.getService(appContext, 0, intent, PendingIntent.FLAG_IMMUTABLE);
mNotificationManager.notify(0, myNotification);
我没有得到任何错误日志或相关的跟踪日志,我看到的唯一日志是
D/skia: --- Failed to create image decoder with message 'unimplemented'
我浏览了一些文档,并偶然发现从后台启动活动的限制,其中列出了一些例外情况之一是当“应用程序在前台任务的返回堆栈中具有活动”时。因此,我希望我的活动将被启动(假设我的应用程序在后台暂停)。
有人能帮我找到问题所在吗?是否可能仍然使用IntentService修复此问题?
或者现在是否需要使用WorkManager进行迁移?如果是这样,请您留下一个好的参考链接。
非常感谢。
PendingIntent contentIntent = PendingIntent.getService(appContext, 0, intentAsMyExpectedActivity, PendingIntent.FLAG_IMMUTABLE);
,对吗? - ZeroserogetActivity()
而不是getService()
,但除此之外看起来很好。 - CommonsWare