android - 从通知开始主要活动失败
问题描述
我的应用程序具有前台通知服务。即使主要活动关闭,该服务也会运行。如果我单击通知,我想重新启动主要活动。我所做的似乎是正确的。
对AndroidManifest.xml的更改:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
在通知中设置待处理的意图:
Intent activityIntent = new Intent(this, Muzika.class);
activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentIntent(pendingIntent)
如果我单击通知,则会显示我的应用程序的初始屏幕,但仅此而已。它在这里冻结,不会启动。
在 AndroidManifest.xml 中,我定义了另一个 inten-filter 来从文件管理器打开音乐文件。它的行为与单击通知时完全相同。如果应用程序完全关闭或主要活动正在运行,则一切正常。如果只有服务正在运行,则会显示主要活动的初始屏幕,然后冻结。
在控制台(使用 logcat)我只能看到这个:
09-20 14:02:31.898 951 2149 I ActivityManager: START u0 {act=android.intent.action.VIEW dat=file:///storage/6D83-F513/Audio/AC-DC/T.N.T..mp3 typ=audio/mpeg flg=0x10000000 cmp=cz.jech.muzika/.Muzika} from uid 10406
09-20 14:03:32.836 951 1060 W ActivityManager: Activity pause timeout for ActivityRecord{34b1a98 u0 cz.jech.muzika/.Muzika t1958}
09-20 14:03:42.849 951 1060 W ActivityManager: Activity stop timeout for ActivityRecord{34b1a98 u0 cz.jech.muzika/.Muzika t1958}
即使是为了打开音乐文件,也会调用该应用程序。但随后它停止了。未调用onCreate函数。我有一个 Log 命令作为此函数中的第一个命令,控制台输出中没有任何内容。
更让我困扰的是它曾经有效。我恢复到它曾经工作的版本,但它没有帮助。从那以后,我将手机上的开发工具 SDK 升级到了 Android 8 (Oreo)。升级是否有可能破坏了功能?知道我还能检查什么吗?
解决方案
推荐阅读
- angular - 如何直接路由到我想要的组件,而不去主组件
- javascript - PhantomJS 在按钮单击事件后捕获下一页内容
- amazon-web-services - aws emr zeppelin 没有 jdbc 解释器
- android - 使用多部分改造的html文件上传
- spring - Spring Security 替换签名/验证器密钥
- azure-active-directory - 我们应该在更新后处理重用代码应用程序吗?
- c# - 如何使用 Roslyn 传递收集所有 MethodDeclarationSyntax?
- rest - 如何使用 Rest API 获取 Power BI 报表数据
- android - Github 上的新提交只有几个文件
- swift - 服务应该调用另一个服务还是应该获取自己的数据