【问题标题】:Jetpack compose for desktop: run application in background?Jetpack compose for desktop:在后台运行应用程序?
【发布时间】:2021-11-07 01:37:23
【问题描述】:

我是jetpack compose的新手。我对该主题进行了很多研究,但找不到任何有用的东西。我想要实现的是,如果我关闭窗口,我的应用程序将留在后台,并且可以从托盘再次打开。我设法创建了托盘,但是当我关闭应用程序窗口时,它会关闭整个应用程序。我怎样才能做到这一点?

此应用程序仅适用于 Windows 和 MacOS。我现在不关心android

【问题讨论】:

  • 每个问题你应该专注于一个主题。根据快捷方式查看this answer,如果不是您要查找的内容,您应该创建一个包含更多详细信息的单独问题,以便任何正在寻找相同问题的人都可以通过标题找到它。并通过删除第二个问题来编辑此问题。
  • 至于主要问题,我无法找到足够的可用API,建议您在kotlin slack#compose-desktop频道询问
  • @PhilipDukhov 谢谢你的回答。我编辑了这个问题,我将把它作为一个单独的问题发布。即使应用程序不在焦点上,我也需要快捷方式才能工作。

标签: kotlin android-jetpack-compose compose-desktop


【解决方案1】:

编辑:对于版本 0.4.0

我设法弄明白了。主要功能应该是应用程序,而不是窗口

@OptIn(ExperimentalComposeUiApi::class)
fun main() = application { 
    
}

如果应用程序同时包含Window和Tray,它将继续在后台运行,并且在窗口关闭后不会关闭。

@OptIn(ExperimentalComposeUiApi::class)
fun main() = application {

    Tray(
        icon = BufferedImage(24, 24, 1),
        menu = {
            Item(
                "Exit",
                onClick = { exitProcess(1) }
            )
        }
    )

    Window{
        Text("Hello World")
    }

}

编辑:对于版本 1.0.0-beta5

现在您必须在窗口对象上指定 onCloseRequest,如果您将其留空,它将不会关闭窗口。 在应用程序中,创建一个变量来指示窗口是否打开。 像以前一样创建托盘。托盘图标现在需要 Painter 对象而不是 BufferedImage。 而不是简单地检查窗口打开状态是否为真,显示窗口,否则什么都不做。

@OptIn(ExperimentalComposeUiApi::class)
fun main() = application {
    val isOpen = remember { mutableStateOf(true)}
    Tray(
        icon = TrayIcon,
        menu = {
            Item(
                "Exit",
                onClick = { exitApplication() }
            )
        }
    )
    if(isOpen.value){
        Window(
            onCloseRequest = { isOpen.value = false }
        ) {
            MaterialTheme {
                Text("Hello World")
            }
        }
    }
}

object TrayIcon : Painter() {
    override val intrinsicSize = Size(256f, 256f)
    override fun DrawScope.onDraw() {
        drawOval(Color(0xFFFFA500))
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2021-06-07
    • 2014-01-10
    • 2011-09-11
    • 2021-04-10
    • 2012-10-31
    相关资源
    最近更新 更多