WebView和runnables

时间:2013-08-15 10:31:46

标签: java android android-intent android-activity android-webview

我在使用我创建的超级基本应用程序时遇到了一些非常模糊的问题。

应用程序纲要:

  1. 主要活动 - 显示应用程序向api提交用户名和密码的登录屏幕。完成后,将发送意图以开始下一个活动
  2. 下载活动 - 此活动从服务器下载一堆文件,并将它们放在“下载”文件夹中以供日后使用。完成所有下载后,将发送另一个意图以启动第三个也是最后一个活动。此活动显示文件下载的进度条。
  3. Web视图活动 - 此活动启动并启动Runnable。这个runnable旨在调用一个函数,然后在5分钟后重新运行,无限制。它运行的函数在布局中创建一个WebView(布局有一个容器布局,因此我们可以每次动态创建webview)。基本HTML页面(在“下载”文件夹中)将加载到Web视图中。
  4. 所以,我推出了应用程序,它开始没有问题。 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());
    }
    
    }
    

0 个答案:

没有答案