在Eclipse.ini中更改堆大小无法帮助

时间:2013-12-10 07:10:45

标签: java eclipse

我的资产目录中有数千个html文件,我必须将它们的位置存储在java文件中,但是java中的堆栈空间有限,这是不允许我这样做的  通过这样做我增加了我的堆栈内存 http://wiki.eclipse.org/FAQ_How_do_I_increase_the_heap_size_available_to_Eclipse%3F

但现在我能够粘贴我的代码,但几秒后我再次得到stackoverflow错误,它提示我终止工作区

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class WebViewActivity extends Activity {
    WebView web;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);
        web = (WebView) findViewById(R.id.webView1);
        web.setWebViewClient(new myWebClient());
        web.getSettings().setJavaScriptEnabled(true);
        int pos = getIntent().getIntExtra("key",0);
 if(pos==0){    web.loadUrl("file:///android_asset/1.html");
else if(pos==1){    web.loadUrl("file:///android_asset/2.html");}   
else if(pos==2){    web.loadUrl("file:///android_asset/3.html");}       
else if(pos==3){    web.loadUrl("file:///android_asset/4.html");}        
else if(pos==4){    web.loadUrl("file:///android_asset/5.html");}

      // similarly for 4 and 5 and so on.
    }

    public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub

            view.loadUrl(url);
            return true;

        }
        @Override
        public void onReceivedError(WebView view, int errorCode,
                String description, String failingUrl) {
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);

        }
    }
}

2 个答案:

答案 0 :(得分:0)

听起来你根本不应该这样做。如果你的堆栈不足,那不是很正常的事情(除非你做无限递归)。用完堆有点更常见。

你说你有成千上万的html文件,并且你将它们的位置存储在一个java文件中。这听起来真的很糟糕。这些位置应存储在数据库中,或者如果不可能(或者更确切地说,您不想),则将其存储在您读入的外部文件中。

您可以粘贴几行代码,并解释您打算如何处理这些数千个HTML文件,我们会为您提供合适的解决方案。

编辑: 好的。一个合适的解决方案是将URL存储到SQLite数据库中,以“pos”作为主键。那么你只需要一行代码,比如

web.loadUrl(sqlDb.load("select url FROM mytable where pos = " + pos));

这里有一个教程:AndroidSQLite

祝你好运! :)

答案 1 :(得分:0)

另一个建议:

if(pos==0){    web.loadUrl("file:///android_asset/1.html");
else if(pos==1){    web.loadUrl("file:///android_asset/2.html");}   
else if(pos==2){    web.loadUrl("file:///android_asset/3.html");}       
else if(pos==3){    web.loadUrl("file:///android_asset/4.html");}        
else if(pos==4){    web.loadUrl("file:///android_asset/5.html");}

我不知道这段代码如何代表你真正在做什么,但在这里看起来你可以计算网址:

String url = "file:///android_asset/" + (pos+1) + ".html";

OTOH,这不是可能导致堆栈溢出的代码。 但是当它发生时,增加堆栈大小,而不是堆大小。 看,如果你的汽车没有燃料,你可以为挡风板清洗器添加气体,而不是水。