【发布时间】:2013-03-30 15:49:47
【问题描述】:
我正在用 javascript 编写游戏。这个应用程序在我的浏览器上运行良好(快速), 但我在使用 android webview 运行它时遇到了一些麻烦。
- 启动应用程序需要 5 秒或更长时间(我认为这有点慢,但也许这很正常?)
-
在游戏的菜单中我有一个类似的方法:
this.showCredits = function() { document.getElementById('core-credits-layer').style.display = 'block'; document.getElementById('core-credits').style.display = 'block'; var parent = this; $.ajax({ url: 'content/credits.html', dataType: 'html', success: function(data, status, response) { var now = new Date(); var s = now.getSeconds()-parent.test.getSeconds(); console.log('success ajax: '+s); document.getElementById('core-credits').scrollTop = 0; document.getElementById('core-credits').innerHTML = response.responseText; console.log('finished'); }, error: function() { console.error('failed fetch credits'); } }); }所以控制台日志(“finished”,success() 中的最后一行)在单击菜单“credits”后立即出现。但在我看到 div #core-credits 之前可能需要 6 秒(或多或少)。 在我的浏览器中,单击后我会立即看到#core-credits。 但是第二次点击那个菜单点我在 1-2 秒后得到了 div。 我现在不知道那是什么,我不这么认为,这是一个缓存的东西,因为我很快就进入了 success() 回调。
Java端:
public void onCreate(Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Context context = this.getApplicationContext();
SharedPreferences wmbPreference = PreferenceManager.getDefaultSharedPreferences(this);
boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
if(isFirstRun) {
this.copyAudioFiles(context);
}
WebView mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
String data = context.getFilesDir().getPath();
mWebView.getSettings().setDatabasePath(data+"data/"+this.getPackageName()+"/databases/");
mWebView.getSettings().setAllowFileAccess(true);
mWebView.setWebChromeClient(new WebChromeClient());
String data_root = Environment.getExternalStorageDirectory()+"/"
+this.getPackageName();
mWebView.loadUrl("file:///android_asset/www/index.html?system=android&" +
"data_root="+data_root);
}
我在 eclipse 中的虚拟平板设备和真正的华硕平板电脑上都存在这个性能问题。
此外,动画(jquery show('slow'))有时真的很慢或损坏。例如(这是一款纸牌游戏),玩家通过 show('slow') 动画变成 9 张卡片,每 2 次或第 3 次我得到 3 或 8 张卡片,但不是 9^^。
以上所有这些都在 chromium 或 firefox 等浏览器上运行良好。 我正在使用 Android 4.1。
激活硬件加速没有帮助。有很多关于 webview 渲染问题的帖子,但只有硬件加速解决方案,这没有帮助。
【问题讨论】:
标签: javascript android