
表示单个会话中的那个应用程序实例。
妳的应用中的每个用户会话都拥有一个相应的WApplication 实例。妳需要创建一个新的实例,并且将它作为 WtServlet.createApplication(WEnvironment) 的结果返回。这个实例是会话相关的信息的主要入口,并且持有部件树的根元素( getRoot() )的引用。
以下代码片段,展示了JWt 的网页程序如何为每个访问者创建一个新 WApplication 实例:
{
@code
public class HelloServlet extends WtServlet {
public HelloServlet() {
super();
}
public WApplication createApplication(WEnvironment env) {
// 在实际项目中,妳应当特化(specialize)WApplication,并且在这里简单地返回一个新实例。
WApplication app = new WApplication(env);
app.getRoot().addWidget(new WText("Hello world."));
return app;
}
}
}
在整个会话中,都可以使用静态函数 getInstance() 来获取这个实例,这个实例使用线程相关的存储区来跟踪当前会话的状态。整个应用可能会因为妳显式调用了 quit() 方法或者因为用户关闭浏览器窗口之后的超时而退出,但不会因为用户没有做操作而退出:只要用户保持这个网页页面为打开状态,后台发送的保命(keep-alive)消息会一直保持这个会话的存在。
WApplication对象允许妳访问到与会话相关的一些选项,包括:
•.环境相关的信息,通过 getEnvironment() 访问,其中包含有:用户信息、启动参数和用户浏览器功能信息。
•.使用 setTitle() 来设置应用的标题。
•.使用 getStyleSheet() 和 useStyleSheet() 来访问内嵌及外部的样式单。
•.使用 doJavaScript() 和 addAutoJavaScript() 来执行内嵌及外部JavaScript。
•.使用 getRoot() 来访问最顶部的那个部件,它代表着整个浏览器窗口。或者,以WidgetSet 模式部署时,使用 bindWidget() 来访问多个顶级部件,用来在第三方页面中管理多个部件。
•.使用 setCookie() 来定义小甜饼(cookies),以便在会话之间保存持久化数据,日后可以在其它的会话中使用 WEnvironment#getCookie() 来读取。
•.使用 getBookmarkUrl() 和相关的方法来管理内部路径(这样就能够启用浏览器历史支持和书签支持)。
•.使用 enableUpdates() 来支持服务器端发起的更新。
•.使用 setLocale() 和 setLocalizedStrings() 来访问本地化信息及消息资源包(message resources bundles)。
黄奕
HxLauncher: Launch Android applications by voice commands
