【问题标题】:My App Crashes Google Services Framework x_X我的应用程序崩溃 Google 服务框架 x_X
【发布时间】:2011-10-23 19:42:01
【问题描述】:

我的应用每隔 x 时间检查一次未接电话。一切正常,但一段时间后它会导致 Google 服务框架 (com.google.process.gapps) 崩溃并显示强制关闭对话框。所以我把手机插上电源,看了看 LogCat,在检查未接来电时发现了这个错误。

E/IMemory(11481): 无法复制 fd=1023, size=1048576, err=0 (太多 打开文件)

E/IMemory(11481):无法映射 BpMemoryHeap (binder=0x8b06f0), size=1048576, fd=-1(错误文件号)

E/JavaBinder(11481): * 未捕获的远程异常! (例外情况是 尚不支持跨进程。)

E/JavaBinder(11481): java.lang.RuntimeException: memObj 中没有内存

E/JavaBinder(11481):在 android.database.CursorWindow.native_init(Native Method)

E/JavaBinder(11481):在 android.database.CursorWindow.(CursorWindow.java:518)

E/JavaBinder(11481):在 android.database.CursorWindow.(CursorWindow.java:27)

E/JavaBinder(11481):在 android.database.CursorWindow$1.createFromParcel(CursorWindow.java:493)

E/JavaBinder(11481):在 android.database.CursorWindow$1.createFromParcel(CursorWindow.java:496)

E/JavaBinder(11481):在 android.content.ContentProviderNative.onTransact(ContentProviderNative.java:103)

E/JavaBinder(11481):在 android.os.Binder.execTransact(Binder.java:288)

E/JavaBinder(11481): at dalvik.system.NativeStart.run(Native Method)

这是我检查未接电话的方式

String[] projection = { CallLog.Calls.TYPE, CallLog.Calls.NEW };
                     String where = CallLog.Calls.TYPE + "=" + CallLog.Calls.MISSED_TYPE + " AND " + CallLog.Calls.NEW + "=1";

Cursor c = this.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, where, null, null);

if(c != null) {
     c.moveToFirst();
     int mMissedCallCount = c.getCount();
...
}

所以查看 LogCat 是导致问题的光标。我在这里做错了吗?还有“打开的文件太多”是什么意思?我还没有打开任何文件——反正我都知道......

【问题讨论】:

    标签: android cursor


    【解决方案1】:

    您似乎从未在光标上调用c.close()。在处理完光标后尝试添加它,看看它是否解决了问题。

    【讨论】:

    • 是的!你是绝对正确的!我忘记打电话了。我现在将其标记为答案!希望我不必取消选中它! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多