sk2*_*212 28 java android android-intent android-activity
我需要一些调试我的应用程序的帮助.首先:在模拟器和其他设备上,我的应用运行正常.在我的设备上,我关闭了一个力(没有强制关闭消息).
如果应用程序的活动发生更改,则会发生"崩溃".
这是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");
}
Run Code Online (Sandbox Code Playgroud)
所以,在onConsoleMessage()
方法中我只是将html代码传递给另一个读取,解析和显示内容的Activity类.
现在的问题是,此时ReadDataActivity
应该加载类,应用程序只需关闭并返回主屏幕,无需任何消息或用户对话框.
作为字符串传递的html代码是否有可能变ReadDataActivity
大?我也尝试将html代码作为字符串添加到HashMap中,但问题是一样的.
我可以做些什么来调试问题?也许我应该尝试创建一个Parcelable
对象?
在模拟器中一切正常.
waq*_*lam 54
根据我的经验(前一段时间),您可以在封装的内部放置1MB的数据.我认为,这个限制在Froyo或GingerBread之前有效.Bundle
Intent
但是,为了解决这个问题,我建议您将内容保存在临时文件中,并将临时文件的路径/ URI传递给第二个活动.然后在第二个活动中,从文件中读取内容,执行所需操作,最后删除该文件.
如果需要,您还可以为此任务合并Shared_Preferences - 如果您认为处理文件很麻烦.
Rol*_*f ツ 16
我对使用Intent传输的最大数据量进行了一些研究.而且似乎这个限制远不及1MB或90KB,更像是500KB(在API 10,16,19 和23上测试).
我写了一篇关于这个主题的博客文章,你可以在这里找到它:https://www.neotechsoftware.com/blog/android-intent-size-limit
归档时间: |
|
查看次数: |
33504 次 |
最近记录: |