嗨,我正在开发一个应用程序,因为我正在使用Android WebView.每当我启动webview活动时,从test.txt文件加载字符串html格式的数据.test.txt文件包含近2.5 MB的数据,加载test.txt文件后,如果幻灯片屏幕结束,则读取所有数据并按回.然后,随后启动webview活动需要更多时间来呈现数据.在第一次推出webview时,它花费的时间很少.在启动此活动之间,我没有收到任何错误/异常/崩溃.
我使用的是Android API等级18及以上版本
注意:我在这个问题上做了很多研究.我尝试从Android webview的解决方案慢和Android WebView性能没有用.
我不能使android:hardwareAccelerated ="true" < - 为什么因为它有很多副作用(我仍然使用这个,但我没有在这个问题上发现任何变化).
我不能使用 webview.getSettings().setRenderPriority(RenderPriority.HIGH);
setRenderPriority() - >此方法在API级别18中已弃用.建议不要调整线程优先级,并且在将来的版本中不支持此方法.
我的DataLoader.java类
public class DataLoader extends Activity {
private WebView webView = null;
// Progress Dialog
private ProgressDialog progressDialog;
String dataContent = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);
webView = (WebView)findViewById(R.id.text);
// Loading webview in Background Thread
new LoadWebView().execute();
}
class LoadWebView extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() { …Run Code Online (Sandbox Code Playgroud) 因此,Android中存在WebView硬件加速的已知错误,请参见此处:https://code.google.com/p/android/issues/detail?id = 17352
禁用硬件加速不是我的选择.
我读过这些很棒的参考资料:
我的问题是,如果打开HWA,是否有人知道任何CSS/HTML变通方法以防止可能发生的渲染伪像?
当我将焦点放在表单字段时,我只会看到它们,它似乎会导致vsync-esque和subpixel gitches.当我关注这个领域时,整个页面似乎都是抖动的.
这似乎position: absolute与此有关.
有没有人解决这个问题?
在我的应用程序中,我正在加载webview中的外部URL列表,并允许用户翻阅它们.Web视图被加载到视图翻录器上.我发现webview加载网址的性能非常糟糕.我已经尝试了从使用框架布局到限制要加载的webview数量的所有内容.表现仍不尽如人意.
如何优化webview的性能?这应该是一种常见的用法.我错过了一些明显的东西.
我的Webview设置是 -
webView.setInitialScale(WEBVIEW_SCALE);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(false);
webView.setWebViewClient(new MyWebViewClient());
webView.setOnTouchListener( new OnTouchListener());
Run Code Online (Sandbox Code Playgroud) 我有一个可以在webview中加载的URL.如果我通过浏览器打开webview,则花费的时间更少,但如果我在webview中加载URL则需要更多时间.此外,如果我必须在另一个屏幕中重复使用具有相同URL的相同webview页面,那么我无法这样做,因为如果我在不同的屏幕中使用相同的webview对象,那么加载URL也需要时间.
如何让我的webview立即加载URL?
我有一个小的网络应用程序,我用Android的WebView功能.
我有一些div用作按钮(带onclick属性).在试用应用程序时(在设备的浏览器中),我在点击按钮后立即注意到了大量的延迟.当我点击按钮和浏览器显示周围的橙色突出显示时,会出现滞后.
我做了一些测试并获得了一些信息:
onclick属性.表现没有改变.我真的不知道为什么会有这么多的滞后.我已经消除了可能导致它的一切,但没有任何帮助.
我错过了什么吗?
点击按钮后如何消除延迟?
我使用jquery mobile和phonegap为android开发了一个应用程序.我通过usb将应用程序部署到我的设备上.应用程序的性能非常糟糕,尤其是在滚动更长的列表时.
奇怪的是:如果我只是打开手机上的浏览器并直接访问index.html,整个应用程序运行顺畅.相同的技术,相同的内容.我不使用phonegap native api或类似的东西.
在android 4.0.2上测试了phonegap 1.5.0和1.7.0rc1,jquery mobile 1.1.0.
有任何想法吗?
我正在开发一个应用程序,我在webview中从外部URL加载网页.加载页面需要花费很多时间才能加载,需要30秒到1分钟,所以请查看我的代码
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
public class WebActivity extends AppCompatActivity {
private WebView webView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
webView = (WebView)findViewById(R.id.webView);
progressBar= (ProgressBar)findViewById(R.id.progressBar2);
String link = getIntent().getExtras().getString("webLink");
String title = getIntent().getExtras().getString("webTitle");
setTitle(title);
webView.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
Log.d("WEB", link);
webView.setWebViewClient(new MyBrowser());
webView.getSettings().setJavaScriptEnabled(true);
//webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
//webView.getSettings().setDomStorageEnabled(true);
//webView.getSettings().setAppCachePath(String.valueOf(getCacheDir()));
//webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.loadUrl(link);
}
@Override
public …Run Code Online (Sandbox Code Playgroud)