我对应用程序包结构的最佳实践有疑问.
我观看了Reto Meier的Google I/O 2011演示文稿"Android Protips:专家Android开发人员的高级主题 "并阅读了他的博客文章" 深入了解位置 ",并注意到他的应用程序包结构:
COM.... .content_providers
com.... .receivers
com.... .services
com....... .UI com....... .UI.fragments
com.... .utils
com....... .utils.base
这是包的首选结构吗?有更好的结构吗?
在Android开发者博客上阅读Tim Bray的帖子"New Gingerbread API:StrictMode"后,我决定开始在我的项目中使用它.我希望在出现问题之前帮助解决性能问题.
我的问题是,每次我尝试加载我的MapActivity时,应用程序都会死掉,但只有在启用了StrictMode时.即使使用简单的代码活动,它也会消亡.
有没有人成功使用StrictMode和MapActivity?如果是这样,诀窍是什么?
LogCat的输出是:
TestActivity - onCreate
TestActivity - onStart
TestActivity - onResume
Handling network change notification:CONNECTED
Couldn't get connection factory client
StrictMode policy violation; ~duration=344 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=343 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:745)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:330)
at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:280)
at com.google.android.gsf.settings.GoogleSettingsProvider.query(GoogleSettingsProvider.java:142)
at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:174)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111)
at android.os.Binder.execTransact(Binder.java:320)
at dalvik.system.NativeStart.run(Native Method)
# via Binder call with stack:
android.os.StrictMode$LogStackTrace
at android.os.StrictMode.readAndHandleBinderCallViolations(StrictMode.java:1059)
at android.os.Parcel.readExceptionCode(Parcel.java:1304)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:111)
at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:366)
at android.content.ContentResolver.query(ContentResolver.java:262)
at android_maps_conflict_avoidance.com.google.common.android.AndroidConfig.getSetting(AndroidConfig.java:216)
at android_maps_conflict_avoidance.com.google.common.android.AndroidConfig.getDistributionChannelInternal(AndroidConfig.java:195)
at android_maps_conflict_avoidance.com.google.common.Config.init(Config.java:273)
at …Run Code Online (Sandbox Code Playgroud)