【问题标题】:String limit on android studio [closed]android studio上的字符串限制[关闭]
【发布时间】:2021-02-19 18:09:10
【问题描述】:

我对 Android Studio 和 java 编程真的很陌生。

我正在尝试创建一个新项目,只是为了进行实验和学习。

这个应用程序有很长的文本,我使用字符串来格式化它,也可以作为资源。

但是,在 1400 多个文本和格式之后,活动崩溃。

请问字符串资源有限制吗?

以及克服这些问题的方法是什么?

我想出使用原始文本,但根据我目前的理解,没有办法像字符串一样格式化它。

如果有人能提供帮助,我真的很感激。

\编辑

这是错误

2021-02-20 14:03:15.512 26003-26003/? E/example.munaja: Unknown bits set in runtime_flags: 0x8000
2021-02-20 14:03:15.528 26003-26003/com.example.munajat E/libc: Access denied finding property "runtime.mmitest.isrunning"
2021-02-20 14:03:15.734 26003-26042/com.example.munajat E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@becf0c7

当我启动崩溃的活动时,这是完整的堆栈跟踪

2021-02-20 14:08:19.733 26422-26422/? I/example.munaja: Late-enabling -Xcheck:jni
2021-02-20 14:08:19.765 26422-26422/? E/example.munaja: Unknown bits set in runtime_flags: 0x8000
2021-02-20 14:08:19.767 26422-26422/? I/example.munaja: Reinit property: dalvik.vm.checkjni= false
2021-02-20 14:08:19.775 26422-26422/? W/re-initialized>: type=1400 audit(0.0:666616): avc: denied { read } for pid=26422 name="u:object_r:mmi_prop:s0" dev="tmpfs" ino=15380 scontext=u:r:untrusted_app:s0:c159,c257,c512,c768 tcontext=u:object_r:mmi_prop:s0 tclass=file permissive=0
2021-02-20 14:08:19.778 26422-26422/? E/libc: Access denied finding property "runtime.mmitest.isrunning"
2021-02-20 14:08:19.782 26422-26422/? D/ActivityThread: Attach thread to application
2021-02-20 14:08:19.925 26422-26422/com.example.munajat I/example.munaja: QarthPatchMonintor::Init
2021-02-20 14:08:19.925 26422-26422/com.example.munajat I/example.munaja: QarthPatchMonintor::StartWatch
2021-02-20 14:08:19.925 26422-26422/com.example.munajat I/example.munaja: QarthPatchMonintor::WatchPackage: /data/hotpatch/fwkhotpatch/
2021-02-20 14:08:19.925 26422-26422/com.example.munajat I/example.munaja: QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/com.example.munajat
2021-02-20 14:08:19.925 26422-26422/com.example.munajat I/example.munaja: QarthPatchMonintor::CheckAndWatchPatch: /data/hotpatch/fwkhotpatch/all
2021-02-20 14:08:19.925 26422-26422/com.example.munajat I/example.munaja: QarthPatchMonintor::Run
2021-02-20 14:08:19.925 26422-26441/com.example.munajat I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=com.example.munajat#10415#256
2021-02-20 14:08:19.925 26422-26456/com.example.munajat I/example.munaja: QarthPatchMonintor::Reading
2021-02-20 14:08:19.925 26422-26441/com.example.munajat I/HwApiCacheMangerEx: apicache path=/storage/1538-291C state=mounted key=com.example.munajat#10415#256
2021-02-20 14:08:19.925 26422-26456/com.example.munajat I/example.munaja: QarthPatchMonintor::CheckNotifyEvent
2021-02-20 14:08:19.926 26422-26456/com.example.munajat I/example.munaja: QarthPatchMonintor::CheckNotifyEvent before read
2021-02-20 14:08:19.927 26422-26441/com.example.munajat I/HwApiCacheMangerEx: apicache path=/storage/emulated/0 state=mounted key=com.example.munajat#10415#0
2021-02-20 14:08:19.927 26422-26441/com.example.munajat I/HwApiCacheMangerEx: apicache path=/storage/1538-291C state=mounted key=com.example.munajat#10415#0
2021-02-20 14:08:19.930 26422-26441/com.example.munajat I/AwareBitmapCacher: init processName:com.example.munajat pid=26422 uid=10415
2021-02-20 14:08:19.962 26422-26458/com.example.munajat E/AwareLog: AtomicFileUtils: readFileLines file not exist: android.util.AtomicFile@b449e48
2021-02-20 14:08:19.999 26422-26422/com.example.munajat V/ActivityThread: callActivityOnCreate
2021-02-20 14:08:20.021 26422-26422/com.example.munajat V/HwWidgetFactory: : successes to get AllImpl object and return....
2021-02-20 14:08:20.047 26422-26422/com.example.munajat W/example.munaja: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
2021-02-20 14:08:20.048 26422-26422/com.example.munajat W/example.munaja: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
2021-02-20 14:08:20.060 26422-26422/com.example.munajat I/OverScrollerOptimization: start init SmartSlideOverScroller and get the overscroller config
2021-02-20 14:08:20.060 26422-26422/com.example.munajat I/OverScrollerOptimization: get the overscroller config
2021-02-20 14:08:20.246 26422-26422/com.example.munajat D/myLog: 2:08 pm
2021-02-20 14:08:20.253 26422-26422/com.example.munajat D/myLog: Sat Feb 20 14:08:20 GMT+08:00 2021
2021-02-20 14:08:20.253 26422-26422/com.example.munajat D/myLog: Saturday, 20 February 2021
2021-02-20 14:08:20.256 26422-26422/com.example.munajat D/ActivityThread: add activity client record, r= ActivityRecord{ebb44ec token=android.os.BinderProxy@91c585c {com.example.munajat/com.example.munajat.home}} token= android.os.BinderProxy@91c585c
2021-02-20 14:08:20.293 26422-26463/com.example.munajat D/HiTouch_PressGestureDetector: onAttached, package=com.example.munajat, windowType=1, mHiTouchRestricted=false
2021-02-20 14:08:20.329 26422-26460/com.example.munajat I/iGraphics: [0020080c] pn: com.example.munajat, p: 26422
2021-02-20 14:08:20.329 26422-26460/com.example.munajat I/iGraphics: [0030080c] no spt app: com.example.munajat
2021-02-20 14:08:20.346 26422-26460/com.example.munajat D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
2021-02-20 14:08:20.419 26422-26460/com.example.munajat W/Gralloc3: mapper 3.x is not supported
2021-02-20 14:08:20.462 26422-26422/com.example.munajat I/HwViewRootImpl: removeInvalidNode jank list is null


【问题讨论】:

  • 活动崩溃时错误日志中列出的错误是什么?这应该有助于指出这是否是文本限制的问题。
  • 我会尽快检查,但现在,我确定这是有限制的,因为 android studio 上没有显示错误,我尝试添加几行没有格式的文本,它也崩溃。如果由于文本限制是真的,我可以知道一些克服它的方法吗?
  • 字符串有限制吗?如果是这样,限制是多少?
  • 我不确定,但是当 Android Studio 中的某个活动在调试模式下崩溃时,您将能够在日志 (stackoverflow.com/questions/19784877/…) 中查看错误,它会告诉您确切的行导致它与错误消息一起崩溃(如果需要,可以轻松地在线搜索以获取更多详细信息)。如果没有将这些日志添加到您的问题中,很难猜测可能导致此问题的原因。
  • 没有固有的“字符串限制”或类似的东西。您的应用程序可能会耗尽内存或其他一些资源。如果我们能看到你的日志,它到底是什么东西会变得清晰可见,所以请提供 WOUNDEDStevenJones 的要求。

标签: java android string


【解决方案1】:

String.length() 方法返回字符串的长度。字符串的长度等于字符串中 Unicode 单元的数量。 Java 平台在 char 数组(每个字符占用两个字节)、String 和 StringBuffer 类中使用 UTF-16 表示。

该方法返回int类型的长度。因此,字符串maximum sizerange of integer data type 相同。该方法将返回的最大长度为Integer.MAX_VALUE

Java 中 int 的大小是 4 个字节(包括一个有符号位,即 MSB)。整数数据类型的范围是 -231 到 231-1(-2147483648 到 2147483647)。请记住,我们不能使用负值进行索引。索引在最大范围内完成。这意味着我们不能存储第 2147483648 个字符。所以Java中String的最大长度是0到2147483647,所以理论上我们可以得到一个长度为2,147,483,647个字符的String。

import java.util.Arrays;

class StringMaxSize {
    public static void main(String args[]) {
        for (int i = 0; i < 1000; i++) {
            try {
                //Integer.MAX_VALUE is a constant that stores the maximum possible value for any integer variable  
                char[] array = new char[Integer.MAX_VALUE - i];
                //assign the specified data value to each element   
                Arrays.fill(array, 'a');
                //creating a constructor of the String class and parses an array into it  
                String str = new String(array);
                //determines and print the length of the string  
                System.out.println(str.length());
            } catch (Throwable e) {
                // returns the detail message string of this throwable  
                System.out.println(e.getMessage());
                //prints the maximum value  
                System.out.println("Last: " + (Integer.MAX_VALUE - i));
                System.out.println("Last: " + i);
            }
        }
    }
}

输出:

因此,1400+ 文本不是实际问题。

更多详情请关注link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2015-10-15
    • 2013-05-18
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多