使用Windows Phone的Inter App Communication重新实例化问题

时间:2014-04-23 10:41:14

标签: c# windows-phone-8 webbrowser-control communication

我正在开发一个WP8应用程序,该应用程序使用显示有状态服务器内容的webbrowser控件。在WP8上,您可以手动切换应用程序。例如。如果要将一个应用程序中的某些信息复制并粘贴到浏览器输入字段中。如果您按此方式切换,则当前应用实例保持活动状态。这意味着Web会话和浏览器控件的当前页面将保持可用。

现在我想要另一个应用程序使用浏览器控件将一些数据直接发送到应用程序 - 无需重新启动它...

据我所知,有三种方法可以处理应用内互动:

  1. 注册将通过从本地存储启动该文件来打开应用程序的文件类型
  2. 注册应用程序协议并使用Launcher.LaunchUriAsync()在查询字符串中提交参数
  3. 使用共享存储文件
  4. 可以找到详细信息here

    我认为最后一种方法并不实用,因为在您启动第二个应用后,现在可以激活调用应用,还是有任何有用的方法来重新激活webbrowser应用?< / p>

    我尝试了第二种方法,但我正在运行一个问题,因为它按设计启动了一个新实例。这意味着调用了InitializePhoneApplication。自定义UriMapper有一个入口点,用于读取传入的参数。所以旧应用实例被终止,所有会话数据,Cookie和输入字段都消失了。使用WP webbrowser控件,您无法存储cookie和页面状态,因此也无法快速恢复应用程序。

    private void InitializePhoneApplication()
    {
        if (this.phoneApplicationInitialized)
        {
            return;
        }
    
        RootFrame = new TransitionFrame();
        RootFrame.Navigated += this.CompleteInitializePhoneApplication;
    
        RootFrame.UriMapper = new AssociationUriMapper();
    
        //...
        this.phoneApplicationInitialized = true;
    }
    

    有没有其他方式或可能使用所示方法在应用之间发送数据而无需使用LanchUri()重新启动它们?

    这意味着,要将一些数据发送回正在运行的实例而不重新初始化整个应用程序,以便目标应用程序仍然可以使用页面状态和会话状态。

    祝你好运

    Holger

1 个答案:

答案 0 :(得分:0)

FastAppResume是解决方案。我没有使用它,并认为它也重新启动应用程序。但它没有。此example显示了如何重用现有实例。

此致 霍尔格