Java Intent putExtra方法的最大长度?(强制关闭)

我需要一些调试我的应用程序的帮助。首先:在模拟器和其他一些设备上,我的应用运行良好。在我的设备上,我得到了强制关闭(没有强制关闭消息)。

如果应用程序的活动发生更改,则会发生“崩溃”。

这是MainActivity该类的一些代码。它只是通过webview从网页读取html内容。不,HttpRequest由于我无法模拟发布请求,因此无法完成此操作。

public class MainActivity extends Activity {

public final static String EXTRA_HTML = "com.example.com.test.HTML";

private WebView mWebView;

private ProgressDialog mDialog;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mWebView = (WebView) findViewById(R.id.webView1);

CookieSyncManager.createInstance(this);

CookieManager cookieManager = CookieManager.getInstance();

cookieManager.removeAllCookie();

mWebView.setBackgroundColor(0);

mWebView.setWebChromeClient(new WebChromeClient() {

public boolean onConsoleMessage(ConsoleMessage cmsg) {

if (cmsg.message().startsWith("MAGIC")) {

mDialog.cancel();

/*HashMap<String, String> message = new HashMap<String, String>();*/

String msg = cmsg.message().substring(5);

Intent intent = new Intent(MainActivity.this,

ReadDataActivity.class);

/*message.put("message", msg);*/

/*intent.putExtra(EXTRA_HTML, message);*/

intent.putExtra(EXTRA_HTML, msg);

startActivity(intent);

}

return false;

}

});

mWebView.getSettings().setJavaScriptEnabled(true);

mWebView.getSettings().setPluginState(PluginState.OFF);

mWebView.getSettings().setLoadsImagesAutomatically(false);

mWebView.getSettings().setBlockNetworkImage(true);

mWebView.getSettings().setAppCacheEnabled(true);

mWebView.getSettings().setSavePassword(true);

mWebView.getSettings()

.setCacheMode(WebSettings.LOAD_NORMAL);

mWebView.setWebViewClient(new WebViewClient() {

public void onPageFinished(WebView view, String address) {

if (address.indexOf("mySession") != -1) {

view.loadUrl("javascript:console.log('MAGIC'+document.getElementsByTagName('html')[0].innerHTML);");

}

});

mWebView.loadUrl("http://www.myurl.de");

}

因此,在该onConsoleMessage()方法中,我只是将html代码传递给另一个Activity类,该类读取,解析和显示内容。

现在的问题是,此时ReadDataActivity应在加载类时关闭应用程序,然后返回主屏幕,而没有任何消息或用户对话框。

以字符串形式传递给的html代码是否可能ReadDataActivity太大?我也尝试将html代码添加为HashMap中的字符串,但是问题是相同的。

一些想法我可以做些什么来调试问题?也许我应该尝试创建一个Parcelable对象?

在模拟器中,一切正常。

回答:

根据我的经验(前一段时间),你最多可以将1MB数据放入一个Bundle封装的inside中Intent。我认为,该限制在Froyo或GingerBread之前一直有效。

但是,为了克服此问题,我建议你将内容保存在临时文件中,并将临时文件的路径/ URI传递给第二个活动。然后在第二个活动中,从文件中读取内容,执行所需的操作,最后删除该文件。

如果你愿意,还可以为该任务合并Shared_Preferences-如果你认为处理文件很麻烦。

以上是 Java Intent putExtra方法的最大长度?(强制关闭) 的全部内容, 来源链接: utcz.com/qa/427455.html

回到顶部