当前位置: 首页 > 面试题库 >

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

荣轶
2023-03-14
问题内容

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

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

这是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-如果你认为处理文件很麻烦。



 类似资料:
  • 问题内容: 我的应用程序使用Spring 处理传入消息。该应用程序的主要方法已经注册了一个关闭钩子。 问题是:强制关闭应用程序上下文的最佳方法是什么? 如果我在消息侦听器中抛出,则它由容器处理,并且不会传递。可以调用System.exit吗?我是否将传递给需要关闭的每个类,以便进行调用? 问题答案: 您可以将应用程序上下文投射到并调用它。至少在servlet上下文被破坏的情况下,在Web应用程序环

  • 本文向大家介绍关于URL最大长度限制的相关资料查证,包括了关于URL最大长度限制的相关资料查证的使用技巧和注意事项,需要的朋友参考一下 在开发调试支付宝接口时,突然发现支付宝接口的URL很长,远远大于之前自己印象中的255个字符。赶紧搜索查证了一番,理解如下: URL不能大于255bytes的说法确实存在,在RFC2616中提到: 从上一点也可以看出,255bytes的说法也是为了兼容性考虑。实际

  • 问题内容: 当我尝试过时如何设置可以使用swift输入到UITextField中的最大字符数?,我看到如果我全部使用10个字符,我也无法删除该字符。 我唯一能做的就是取消该操作(一起删除所有字符)。 有谁知道如何不遮挡键盘(以便我不能添加其他字母/符号/数字,但可以使用退格键)? 问题答案: 对于Swift 5和iOS 12,请尝试以下协议实现方法的实现: 该代码最重要的部分是从()到()的转换。

  • 配置最大长度为数据存储提供了有关示意,示意其为给定属性使用合适的数据类型。最大长度仅被应用于数组数据类型,比如 string 和 byte[]。 注意 Entity Framework 在将数据传递给数据库提供程序之前不会做最大长度验证。是否合适是由数据库提供程序或数据储存验证的。比如,使用的是 SQL Server 时,超出最大长度将由于底层数据列的数据类型不允许数据超出而导致异常。 惯例 按照

  • 问题内容: 我正在尝试使用连接服务器,但是PUT方法存在问题。 我需要发送一个包含 1500个字符 (或更多)的字符串,但是在这种情况下,服务器会产生超时并返回 500个服务器内部错误 。 如果我发送的字符串少于 1400个字符 ,则没有问题,服务器返回 OK 。 我的代码如下: // ----------------------- 我尝试添加线 但是服务器的答案还是错误的。 更新: 我可以发现问

  • 问题内容: Java中的类/方法/变量名称是否有最大长度?JLS似乎没有提及。从代码的可读性和可维护性的角度来看,我知道很长的名称还是有问题的,但是出于好奇,这是有限制的(我想类名可能受到文件系统最大文件名限制的限制)。 问题答案: 抱歉,实际上在JLS中找到了答案:http : //java.sun.com/docs/books/jls/third_edition/html/lexical.ht