1. 理解Android Presentation的核心机制
第一次接触Android Presentation时,我也被这个看似复杂的技术名词吓到了。但实际用起来才发现,它就像个智能的"内容分发器",能帮我们把不同的画面精准投放到不同的屏幕上。想象一下,你手里拿着横屏的平板,旁边竖着安装了一块细长的流媒体后视镜(400x1920分辨率),Presentation就是让这两个屏幕各司其职的魔法棒。
Presentation本质上是个特殊的Dialog,但它的特别之处在于能绑定到指定的物理显示器。我在车载项目里实测发现,创建Presentation时需要三个关键要素:
- Context对象(建议用applicationContext避免内存泄漏)
- 目标Display对象(代表具体的物理屏幕)
- 自定义的布局文件(决定副屏显示内容)
kotlin复制class CustomPresentation(
outerContext: Context,
display: Display
) : Presentation(outerContext, display) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.presentation_layout)
// 这里可以初始化副屏特有的UI逻辑
}
}
最让我惊喜的是Presentation的生命周期管理。当副屏断开时,系统会自动调用onStop();重新连接时又会触发onStart()。这个特性在车载场景特别实用,比如后视镜临时断电后重新通电,显示内容能自动恢复。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 双屏检测与连接实战技巧
在实际项目中,我发现有几种靠谱的方式获取副屏对象。通过DisplayManager获取是最通用的方法,尤其适合固定安装的副屏设备。记得第一次调试时,我犯了个低级错误——没检查displays数组长度就直接取下标1,结果在单屏设备上直接崩溃。
kotlin复制val displayManager = getSystemServ
