在Android 8(API级别26)及更高版本中,直接启动模式已被弃用。直接启动模式是指通过FLAG_ACTIVITY_CLEAR_TOP
和FLAG_ACTIVITY_NEW_TASK
标志直接启动一个Activity,并将其放置在任务栈的顶部。
在Android 8中,直接启动模式被新的限制所取代,即在后台启动Activity时需要添加ACTION_VIEW
Intent,并且该Intent的目标Activity必须具有CATEGORY_BROWSABLE
类别。这意味着在后台启动Activity时,必须通过浏览器或其他允许的应用程序来打开Activity。
以下是一个示例,展示如何在Android 8及更高版本中启动一个Activity:
// 创建Intent
Intent intent = new Intent(context, MyActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
// 检查当前设备的API级别
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 在Android 8及更高版本中,使用startForegroundService启动服务
context.startForegroundService(intent);
} else {
// 在Android 7及更低版本中,使用startService启动服务
context.startService(intent);
}
请注意,上述代码适用于启动服务,但同样适用于启动Activity。只需将MyActivity
替换为要启动的Activity类。