首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Sparkle updater(java app)中等待用户操作?

如何在Sparkle updater(java app)中等待用户操作?
EN

Stack Overflow用户
提问于 2014-03-26 21:36:20
回答 1查看 183关注 0票数 1

所以我有SparkleAcrivator类

代码语言:javascript
复制
public class SparkleActivator {
    private static boolean sparkleLibLoaded = false;
    //private String downloadLink;
    private String menuItemTitle;

    public native static void initSparkle(String pathToSparkleFramework,
                                          boolean updateAtStartup,
                                          int checkInterval,
                                          /*String downloadLink,*/
                                          String menuItemTitle);

    private boolean updateAtStartup = true;
    private int checkInterval = 86400;

    public SparkleActivator(/*String downloadLink, */String menuItemTitle) {
        //this.downloadLink = downloadLink;
        this.menuItemTitle = menuItemTitle;
    }

    public void start() throws Exception {
        try {
            if(!SparkleActivator.sparkleLibLoaded) {
                System.loadLibrary("sparkle_init");
                SparkleActivator.sparkleLibLoaded = true;
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            return;
        }

        initSparkle(System.getProperty("user.dir") + "/../../Frameworks/Sparkle.framework",
                updateAtStartup, checkInterval, /*downloadLink, */menuItemTitle);
    }
}

和main类,我在其中启动我的独立应用程序并使用Sparkle

代码语言:javascript
复制
public static void main(final String... args) {

                if (Helper.isOsx()) {

                    try {
                        sparkleActivator.start();
                    }    catch (Exception e) {
                        new ExceptionHandler(true, 19).handleException(new NotFountSparkleInitException());
                        return;
                    }
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {                             
                                initApp();

                        }
                    });
                }
                else {                  

    }

问题是Sparkle和我的应用程序几乎同时启动,但我需要等待用户在Sparkle窗口中的操作,然后启动我的应用程序。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-01-28 15:30:18

我们所知道的是Sparkle updater requires to be called on the main thread (即GUI线程)。因此,您的应用程序需要运行才能调用它。我不认为有一个明显的方法来解决这个问题。然而,..。

你可以绕过这个问题的一种方法是将你的应用的可见性设置为false,直到用户完成与你的更新程序的交互。

例如,您可以添加事件listener to your JNIadd listeners to your updater thread。但是,线程上的侦听器需要在用户操作时返回,而不是在完成时返回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22662681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档