Привет, я работаю над одним приложением. В этом я использую Android WebView. Всякий раз, когда я запускаю активность веб-просмотра, загружаю данные в строковый html-формат из файла test.txt. Файл test.txt содержит почти 2,5 МБ данных после загрузки файла test.txt, если слайд-экран заканчивается, чтобы прочитать все данные и нажать. Затем последующий запуск активности веб-просмотра занимает больше времени для обработки данных. При первом запуске webview он занимает минимальное время. Я не получаю никаких ошибок/исключений/сбоев между запуском этого действия.
Я использую Android API уровня 18 и выше
Примечание: Я много исследовал эту проблему. Я пробовал решение из Android-браузера в режиме паутины и производительность Android WebView без использования.
Я не могу сделать андроид: 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() {
super.onPreExecute();
progressDialog = new ProgressDialog(DataLoader.this);
progressDialog.setTitle("Loading...");
progressDialog.setMessage("Please wait.");
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(true);
progressDialog.show();
}
protected String doInBackground(String... args) {
// AssetFileReader read the txt file and return data in the form of string
dataContent = AssetFileReader.read(getApplicationContext(), "test.txt");
return null;
}
protected void onPostExecute(String str) {
// dismiss the dialog
progressDialog.dismiss();
if (dataContent != null) {
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
WebSettings s = webView.getSettings();
s.setUseWideViewPort(true);
s.setSupportZoom(true);
s.setBuiltInZoomControls(true);
s.setDisplayZoomControls(false);
s.setJavaScriptEnabled(true);
webView.loadData(dataContent, "text/html", "utf-8");
}
});
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
webView.clearCache(true);
webView.clearHistory();
}
}
мой файл web_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/text">
</WebView>
</LinearLayout>
пожалуйста, дайте мне знать, если у вас есть какие-либо проблемы по этой проблеме.