package com.hk.wos; import android.os.AsyncTask; /** * 方便在activity中获取网络任务 * * @author 包子大叔 * @time 2013-8-15 下午4:16:18 */ public abstract class BaseTaskActivity extends BaseActivity { /** * 后台线程,一般用于获取网络任务 */ protected MyTask myTask; /** * 判断默认线程myTask是否正在运行 * * @return */ protected boolean isTaskWorking() { if (myTask != null) { return true; } else { return false; } } /** * 启动线程,一般用于网络数据的获取; 线程主体请实现doInTask()方法, 线程结束后将调用onTaskOver()方法; */ protected void startTask() { if (isTaskWorking()) { toast("任务正在执行..."); } else { showDialogLoading(true); myTask = new MyTask(); myTask.execute(); } } /** * 线程主体,只能做数据处理,不能处理UI * * @return 返回网络任务得到的json字符串,本字符串会传入onTaskOver()方法中 */ abstract protected String doInTask(); /** * 线程完成后触发本方法,可以在这里进行数据处理,UI处理,(不需要关系线程和等待中对话框) * * @param result * 后台线程主体doInTask()方法返回的字符串 */ abstract protected void onTaskOver(String result); /** * 一般用于获取网络数据 * * @author 包子大叔 * @time 2013-8-15 下午4:14:58 */ public class MyTask extends AsyncTask<Void, Void, Boolean> { String result = ""; @Override protected Boolean doInBackground(Void... params) { result = doInTask(); return true; } @Override protected void onPostExecute(final Boolean success) { myTask = null; showDialogLoading(false); onTaskOver(result); } @Override protected void onCancelled() { myTask = null; showDialogLoading(false); } } }
1. 预取页面 Prefetching pages (总觉得不应该这样翻译,应该叫预加载)
说明:当采用single-page类型时,我们可以预先加载页面到dom树里(ps:通过浏览器的查看可以看到,ff里是浅色)。jqm会在当前page加载后,加载那个具有 data-prefetch 标签(target)的page,这时候pagecreat事件就被触发,你就可以在dom里面看到这个页面本没有的pages。
方法:1. <a id="setting" data-icon="custom" href="/blog_article/settings.html" data-prefetch >设置</a>
2. $.mobile.loadPage( pageUrl, { showLoadMsg: false } );
优点:当预取页面时候,用户看不到ajax请求页面的信息(ps:只要不是多图杀猫时代)。
经过本人测试:页面不预取的情况跳转链接页面时候会出现菊花,当预取之后,菊花没有了,速度提升了,但是设定预取的页面会出现页面已经加载完毕,联网的菊花还在转,说明程序在ajax预取!反正你都会看到菊花^_^!!! 适用场景:因为预取页面会产生额外的HTTP请求并占据了带宽,所以明智的选择是:预取的页面被访问可能性是最高的。所以一般会被应用于 相片画廊,让用户可以快速在相片之间切换。
2.控制dom大小 DOM size management
对于页面的动画切换(沙发里浏览器支持的最好),两个切换的页面都需要在dom里,因此,旧的页面可能会占满浏览器的缓存空间,甚至会导致一些移动浏览器运行缓慢,或崩溃(我的touch就崩了)。
因此,jqm提供一个简单的机制来控制dom的大小。
只要是通过ajax加载的页面,当你长时间(ps:具体多长时间文档没有说,我是测试到了,如果你把预取的页面射到缓存里,那么你肯定看不到这个效果)不去访问他jqm 会标记并从dom中删除他,如果你重新访问一个被删除的页面,浏览器会从他的缓存里面找这个网页对应的html文件,如果没有缓存,就只能从服务器重新获取。(In the case of nested list views, jQuery Mobile removes all the pages that make up the nested list once you navigate to a page that's not part of the list)。
这个机制对多网页页面不受用,因为jqm只删除那些通过ajax加载的页面。
3.dom 缓存
Caching pages in the DOM
我们可以告诉jqm保留那些我们之前访问过的页面,而不是删除她们。
方法: 1.$.mobile.page.prototype.options.domCache = true;
2.<div data-role="page" id="cacheMe" data-dom-cache="true">
3.pageContainerElement.page({ domCache: true });
这部分就没什么可翻译了。
原文地址:
http://jquerymobile.com/demos/1.0/docs/pages/page-cache.html
Intellij IDEA的UI使用默认字体还是最漂亮的(不是editor,是界面,比用宋体好看多了),但是因为不支持中文所以如果有中文的时候会显示成方块字。 其实我们只要让idea的jre的环境是en的话 就能让Messages Tab显示英文而不是中文。 就解决中文方块字的问题。
修改JetBrains\IntelliJ IDEA 12.1.4\bin\idea64.exe.vmoptions文件 在最后加多一行。