我在使用我创建的超级基本应用程序时遇到了一些非常模糊的问题。
应用程序纲要:
所以,我推出了应用程序,它开始没有问题。 HTML文件已加载,我离开了办公室。
我今天早上回到应用程序,Web视图不可见,登录屏幕(第一个活动的视图,在屏幕上显示。
我退出了应用并检查了我用来记录logcat的应用。它显示Runnable每1-2分钟发射一次,而不是5(300,000毫秒)。怪异。
所以我浏览了大约12个小时的logcat,每隔几分钟就会运行一次runnable(再次,它应该是5!)。没有应用程序失败的迹象。
Web View是否有可能正在运行,但是在第一个活动的布局“下面”?如果是这样,会导致什么?
以下是我的网络视图活动代码:
public class WebViewActivity extends Activity {
Timer autoUpdate;
Handler handler = new Handler();
Handler webHandler = new Handler();
Intent intent;
ArrayList<String> advertArray;
ProgressDialog pd;
File playlistFile;
File path;
File adFile;
private int currentIndex = 0;
private LinearLayout webContainer;
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("MYAPP", "Starting WebViewActivity");
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_webview);
webContainer = (LinearLayout) findViewById(R.id.webviewContainer);
handler.postDelayed(runnable, 0);
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
Log.i("runnable", "loadHTML");
loadHtml();
handler.postDelayed(this, 600000);
}
};
private void loadHtml() {
intent = getIntent();
advertArray = (ArrayList<String>)intent.getSerializableExtra("adverts");
Log.i("advert array size", ""+advertArray.size());
Log.d("main", "ACTIVITY ONCREATE");
webView = new WebView(this);
webView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
webContainer.removeAllViews();
webContainer.addView(webView);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setAppCacheEnabled(false);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setRenderPriority(RenderPriority.HIGH);
path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/files");
String index = advertArray.get(currentIndex);
Log.i("advert array index", index);
adFile = new File(path + "/" + index + "/index.html");
webView.loadUrl("file:///" + adFile.getAbsolutePath());
}
}