从 IntentService 开始 activity 在 Android 12 中不起作用
Start activity from IntentService does not work in Android 12
快速背景:我已经将最新的 targetSdkVersion
更新为最新的 Android 31
我有一项服务 class 在从通知托盘中单击通知后执行,它包含以下代码:
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'
我浏览了一些文档并偶然发现了 Restrictions on starting activities from the background,其中列出了一些例外情况,其中之一是当“应用程序在前台的后台堆栈中有一个 activity任务。”所以我期待我的 activity 会启动(假设我的应用程序在后台暂停)
谁能帮我找出问题所在?是否仍然可以使用 IntentService 修复此问题?
或者现在是否需要使用 WorkManager 进行迁移?如果是这样,你也可以留下一个很好的参考来查看。
非常感谢。
So I was expecting that my activity would be started (given that my application was paused in the background)
FWIW 它似乎不符合您引用的规则:“该应用程序在 前景 [=20] 的后堆栈中有一个 activity =]任务。” (强调)——你的应用程序在后台,而不是前台。
I have a service class that gets executed after a notification is clicked from the notification tray, it contains below code:
让您的通知直接启动 activity。像这样的“蹦床”are banned once your targetSdkVersion
reaches 31 or higher.
快速背景:我已经将最新的 targetSdkVersion
更新为最新的 Android 31
我有一项服务 class 在从通知托盘中单击通知后执行,它包含以下代码:
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'
我浏览了一些文档并偶然发现了 Restrictions on starting activities from the background,其中列出了一些例外情况,其中之一是当“应用程序在前台的后台堆栈中有一个 activity任务。”所以我期待我的 activity 会启动(假设我的应用程序在后台暂停)
谁能帮我找出问题所在?是否仍然可以使用 IntentService 修复此问题?
或者现在是否需要使用 WorkManager 进行迁移?如果是这样,你也可以留下一个很好的参考来查看。
非常感谢。
So I was expecting that my activity would be started (given that my application was paused in the background)
FWIW 它似乎不符合您引用的规则:“该应用程序在 前景 [=20] 的后堆栈中有一个 activity =]任务。” (强调)——你的应用程序在后台,而不是前台。
I have a service class that gets executed after a notification is clicked from the notification tray, it contains below code:
让您的通知直接启动 activity。像这样的“蹦床”are banned once your targetSdkVersion
reaches 31 or higher.