`
dongya1987
  • 浏览: 47771 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Android源码中的低级错误

 
阅读更多

我这里要说的是MediaScanner.java,代码连接http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=media/java/android/media/MediaScanner.java;hb=HEAD

请看pruneDeadThumbnailFiles()这个函数

Cursor c = mMediaProvider.query(
                    mThumbsUri,
                    new String [] { "_data" },
                    null,
                    null,
                    null);
            Log.v(TAG, "pruneDeadThumbnailFiles... " + c);
            if (c != null && c.moveToFirst()) {
                do {
                    String fullPathString = c.getString(0);
                    existingFiles.remove(fullPathString);
                } while (c.moveToNext());
            }

            for (String fileToDelete : existingFiles) {
                if (Config.LOGV)
                    Log.v(TAG, "fileToDelete is " + fileToDelete);
                try {
                    (new File(fileToDelete)).delete();
                } catch (SecurityException ex) {
                }
            }

            Log.v(TAG, "/pruneDeadThumbnailFiles... " + c);
            if (c != null) {
                c.close();
            }

 难道写这个函数的工程师不知道要把数据库游标的关闭放在finally里面吗?导致了这样的问题:

01-06 00:19:22.949: ERROR/StrictMode(514): Releasing statement in a finalizer. Please ensure that you explicitly call close() on your cursor: SELECT _id, date_modified, _data FROM video WHERE (mime_type != 'video/avi'  AND mime_type != 'video
01-06 00:19:22.949: ERROR/StrictMode(514): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
01-06 00:19:22.949: ERROR/StrictMode(514):     at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:63)
01-06 00:19:22.949: ERROR/StrictMode(514):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
01-06 00:19:22.949: ERROR/StrictMode(514):     at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49)
01-06 00:19:22.949: ERROR/StrictMode(514):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
01-06 00:19:22.949: ERROR/StrictMode(514):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356)
01-06 00:19:22.949: ERROR/StrictMode(514):     at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:330)
01-06 00:19:22.949: ERROR/StrictMode(514):     at com.android.providers.media.MediaProvider.query(MediaProvider.java:1607)
01-06 00:19:22.949: ERROR/StrictMode(514):     at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:174)
01-06 00:19:22.949: ERROR/StrictMode(514):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111)
01-06 00:19:22.949: ERROR/StrictMode(514):     at android.os.Binder.execTransact(Binder.java:320)
01-06 00:19:22.949: ERROR/StrictMode(514):     at dalvik.system.NativeStart.run(Native Method)
 
分享到:
评论

相关推荐

    Android Serial.zip_Android Serial源码_android_android serial_串口 an

    - 在Android系统中,串口通信通常用于与外部硬件如传感器、控制器或其他电子设备进行低级通信。 2. **Android串口API**: - "Android Serial"源码可能包含一个自定义的串口API,允许开发者进行读写操作,设置波特...

    Ntag21x芯片读写Android示例源码.rar

    通过这个示例源码,开发者可以学习如何在Android环境中进行NFC读写操作,特别是与Ntag21x芯片的交互,这对于开发涉及NFC功能的应用非常有帮助。同时,理解JNI和So库的使用也是提升Android应用性能的重要手段。在实际...

    Android源码——RockPlayer源码.7z

    在Android中,多媒体处理主要由Media Framework负责,它包含了多个层次,如MediaPlayer服务、OpenMAX AL(音频低级接口)、OpenMAX IL(跨平台多媒体接口)等。RockPlayer在此基础上进行了优化和扩展,以提供更好的...

    android源码开发实战7.08.zip

    在Android源码开发实战7.08的课程中,我们将深入探讨Android操作系统的内部机制,了解并实践如何基于源码进行应用开发。这个压缩包包含了该主题的学习资料,旨在帮助开发者提升对Android系统核心功能的理解,以及...

    安卓Android源码——安卓视音频播放测试工程.zip

    这个压缩包“安卓Android源码——安卓视音频播放测试工程.zip”包含了用于测试和学习的源码,特别针对音视频播放的功能。以下是对该工程中可能涉及的知识点的详细解释: 1. **MediaPlayer类**:Android系统提供的...

    Android源码——测试周围环境分贝的功能源码_new_53.7z

    这个名为"Android源码——测试周围环境分贝的功能源码_new_53.7z"的压缩包包含了实现这一功能的源代码。在这里,我们将深入探讨相关知识点。 1. **麦克风权限**: 在Android中,任何涉及录音或捕捉音频数据的APP都...

    Android代码-调用C代码和C代码调用源码.zip

    在Android开发中,有时我们需要利用C或C++的性能优势,处理一些低级操作,如图形处理、加密解密或与硬件直接交互等。这种情况下,Android提供了Java Native Interface (JNI)来支持Java代码调用C/C++代码,以及C/C++...

    android高级开发源码集合

    这个"android高级开发源码集合"显然包含了针对这些方面的代码示例和项目,非常适合开发者深入理解Android系统的工作原理,以及如何在实际项目中应用这些技术。 首先,我们来关注"Android多媒体开发高级编程"这一...

    android视频播放器源码

    9. **错误处理**:在源码中,我们还需要看到如何处理各种可能的错误,如文件不存在、解码失败、网络中断等,以提供良好的用户体验。 10. **兼容性**:由于Android设备的多样性,视频播放器需要考虑不同版本的...

    Android应用源码串口通信(JNI)例子-IT计算机-毕业设计.zip

    4. **Android源码结构**:这个毕业设计可能包含以下几个主要部分: - `MainActivity.java`:Android应用的主入口,负责调用JNI接口。 - `JNI native方法`:在C/C++代码中实现的串口通信功能,如`openSerialPort`, ...

    安卓Android源码——网络通信的六种方式示例代码.zip

    这份"安卓Android源码——网络通信的六种方式示例代码"的压缩包提供了多种网络通信方法的实践代码,帮助开发者更好地理解和运用这些技术。下面我们将详细探讨这六种网络通信方式。 1. **HTTP/HTTPS请求**: - **...

    Android Rss订阅源码Demo.rar

    【Android RSS订阅源码Demo详解】 在Android应用开发中,RSS订阅是一种常见的功能,它允许用户获取并跟踪网站或博客的最新内容。本Demo旨在帮助开发者理解如何在Android平台上实现RSS订阅功能。RSS(Really Simple ...

    Android应用源码之串口编程资料.zip

    在Android应用源码中,串口编程涉及到以下几个关键步骤: 1. **权限设置**:在AndroidManifest.xml文件中添加必要的权限,如`&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt;`和`...

    Android应用源码史上最强NDK入门项目实战.zip

    在Android应用开发中,NDK(Native Development Kit)是一组工具,允许开发者使用C和C++编写部分应用程序,以提高性能、处理低级硬件交互或利用特定硬件加速功能。本项目实战将带你深入理解Android NDK的使用,通过...

    Android应用源码之SeeJoPlayer(视频播放器).zip

    在这个项目源码中,我们可以深入学习Android平台上的视频处理技术,包括视频解码、渲染、控制以及用户体验优化等方面的知识。 1. 视频解码:SeeJoPlayer可能采用了硬件加速的解码方式,如MediaCodec API,来提高...

    main.c_android_

    8. **异常处理**:原生代码中的错误不会像Java那样抛出异常,而是返回错误代码或触发信号。因此,需要在Java层处理这些返回值或信号。 9. **多平台兼容性**:Android支持多种架构(如armeabi, armeabi-v7a, arm64-...

    Android应用源码之网络通信的六种方式示例代码-IT计算机-毕业设计.zip

    本资源“Android应用源码之网络通信的六种方式示例代码”提供了丰富的实践案例,适用于毕业设计学习,帮助开发者深入理解Android中的网络编程。以下将详细讲解这六种网络通信方式及其应用。 1. **HttpURLConnection...

    手机3D欢乐斗地主源码

    3. **3D图形处理**:源码中的3D元素可能利用了Flash的Stage3D API,这是一个低级的图形加速接口,可以实现硬件加速的3D渲染。这使得游戏能够在移动设备上呈现流畅的3D画面,提升游戏体验。 4. **Android适配**:...

    Android-ExecuteShell是一个可以方便的执行shell命令的Android开源库

    在Android系统中,有时我们需要执行一些低级的操作,如文件管理、系统调试或者权限控制,这时就需要借助shell命令。通过ExecuteShell库,开发者可以避免直接与底层的复杂交互,简化了代码,提高了开发效率。 **核心...

    Android系统串口收发源码.zip

    这个源码项目为开发者提供了一个学习和参考Android串口通信的实例,可以帮助理解如何在Android平台上实现与外部设备的低级通信。通过分析和调试源代码,可以深入理解Android串口通信的原理和实践。

Global site tag (gtag.js) - Google Analytics