Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:如何读取不';不要指定我的代码行_Java_Android_Debugging_Stack Trace_Crash Reports - Fatal编程技术网

Java Android:如何读取不';不要指定我的代码行

Java Android:如何读取不';不要指定我的代码行,java,android,debugging,stack-trace,crash-reports,Java,Android,Debugging,Stack Trace,Crash Reports,我的应用程序用户报告错误,导致他们的堆栈跟踪显示在Google Play开发者控制台中。但问题是,这些日志/跟踪中有几个不包含有关我的应用程序特定代码的信息。 下面是一个例子: backtrace: native: pc 0000000000069340 /system/lib64/libc.so (tgkill+8) native: pc 0000000000066ad0 /system/lib64/libc.so (pthread_kill+68) native: pc 0000

我的应用程序用户报告错误,导致他们的堆栈跟踪显示在Google Play开发者控制台中。但问题是,这些日志/跟踪中有几个不包含有关我的应用程序特定代码的信息。 下面是一个例子:

backtrace:
native: pc 0000000000069340    /system/lib64/libc.so (tgkill+8)
native: pc 0000000000066ad0    /system/lib64/libc.so (pthread_kill+68)
native: pc 0000000000023910    /system/lib64/libc.so (raise+28)
native: pc 000000000001e240    /system/lib64/libc.so (abort+60)
native: pc 000000000000cf04    /system/lib64/libcutils.so (__android_log_assert+236)
native: pc 000000000002c238    /system/lib64/libhwui.so
native: pc 00000000000288b8    /system/lib64/libhwui.so
native: pc 000000000002ae34    /system/lib64/libhwui.so
native: pc 000000000002f374    /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+124)
native: pc 00000000000169b4    /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+208)
native: pc 00000000000953c0    /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+96)
native: pc 0000000000016204    /system/lib64/libutils.so
native: pc 0000000000065f20    /system/lib64/libc.so (_ZL15__pthread_startPv+52)
native: pc 000000000001edec    /system/lib64/libc.so (__start_thread+16)
这是来自一个星系S6。 类似地,请参见以下跟踪:

  java.lang.OutOfMemoryError: 
at java.lang.Thread.nativeCreate(Native Method:0)
at java.lang.Thread.start(Thread.java:1063)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:921)
at java.util.concurrent.ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.java:989)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1131)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
这也是来自星系S6。 以下两个来自Galaxy Tab4 7.0:

java.lang.RuntimeException: 
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:741)
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:278)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
    at android.widget.PopupWindow.invokePopup(PopupWindow.java:1067)
    at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:966)
    at android.support.v7.widget.AppCompatPopupWindow.showAsDropDown(AppCompatPopupWindow.java:105)
    at android.support.v4.widget.PopupWindowCompatKitKat.showAsDropDown(PopupWindowCompatKitKat.java:33)
    at android.support.v4.widget.PopupWindowCompat$KitKatPopupWindowImpl.showAsDropDown(PopupWindowCompat.java:129)
    at android.support.v4.widget.PopupWindowCompat.showAsDropDown(PopupWindowCompat.java:206)
    at android.support.v7.widget.ListPopupWindow.show(ListPopupWindow.java:721)
    at android.support.v7.view.menu.StandardMenuPopup.tryShow(StandardMenuPopup.java:160)
    at android.support.v7.view.menu.StandardMenuPopup.show(StandardMenuPopup.java:187)
    at android.support.v7.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:290)
    at android.support.v7.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:175)
    at android.support.v7.widget.ActionMenuPresenter$OpenOverflowRunnable.run(ActionMenuPresenter.java:803)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:146)
    at android.app.ActivityThread.main(ActivityThread.java:5602)
    at java.lang.reflect.Method.invokeNative(Native Method:0)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
    at dalvik.system.NativeStart.main(Native Method:0)
Caused by: android.os.TransactionTooLargeException: 
    at android.os.BinderProxy.transact(Native Method:0)
    at android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:710)
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:730)

所有这些都来自三星设备。我无法在Nexus 5上重现这些错误,其他设备用户也无法报告这些问题。我怎么知道是什么原因导致了车祸

我有一个线索,但那也只发生在三星。我有以下代码:

private class ListOldFiles extends AsyncTask<String, Integer, Boolean> {
    @Override
    protected Boolean doInBackground(String... strings) {

        ArrayList<String> filesList = loadOrderedCollection(FILES_LIST_KEY);
// loads JSON from SharedPreferences and converts it into ArrayList.
        for (String path : filesList) {
            if (isCancelled())
                return false;

            itemList.add(new Item(path));
            publishProgress();
        }
        return true;
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        itemArrayAdapter.notifyDataSetChanged();
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(Boolean shouldContinue) {
        if (shouldContinue)
            listAllFiles = new ListAllFiles().execute();

        super.onPostExecute(shouldContinue);
    }
}

报告的错误是“由以下原因引起的:android.os.TransactionTooLargeException”。可能您的JSON太大,无法加载。查看有关此异常的文档了解更多信息:好的,文档中说“活页夹事务缓冲区的固定大小有限,目前为1Mb”。这是什么意思?在JSON抛出异常之前,它可以有多大?我不知道您试图实现什么,但如果JSON太大,您可能应该找到更好的方法来存储数据。也许是数据库什么的。这样,当用户滚动时,您可以请求唯一必要的信息,而不是将所有内容加载到内存中。我正在保存所有音频文件的列表,然后用保存的列表填充我的RecyclerView。在前面提到的异步任务中,我从SharedReferences获取它是的,基本上是将整个列表加载到内存中。因此,如果文件列表很长,它可能太大了。
private class ListOldFiles extends AsyncTask<String, Integer, Boolean> {
    @Override
    protected Boolean doInBackground(String... strings) {

        ArrayList<String> filesList = loadOrderedCollection(FILES_LIST_KEY);
// loads JSON from SharedPreferences and converts it into ArrayList.
        for (String path : filesList) {
            if (isCancelled())
                return false;

            itemList.add(new Item(path));
            publishProgress();
        }
        return true;
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        itemArrayAdapter.notifyDataSetChanged();
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(Boolean shouldContinue) {
        if (shouldContinue)
            listAllFiles = new ListAllFiles().execute();

        super.onPostExecute(shouldContinue);
    }
}
             listAllFiles = new ListAllFiles().execute();