大佬教程收集整理的这篇文章主要介绍了android – SQLite:库程序不按顺序调用 – 如何解决这个崩溃问题?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这不是每次都会发生,而是经常发生,有时在按钮点击时有时会出现在新的Activity创业公司……等等
崩溃异常:
11-16 15:16:41.231: E/sqliteQuery(6398): exception: library routIne called out of sequence; query: SELECT _id,name,tipus,azonosito,gpsx,gpsy,pictures,telefonok,webcim,email,nyitvatartas,cim,orszag,befogadokepesseg,szolgaltatasok,arkategoria,leiras,ertekeles,pontszam,facebook,keywords,rating FROM shops_top20 11-16 15:16:41.241: E/AndroidRuntime(6398): FATAL EXCEPTION: main 11-16 15:16:41.241: E/AndroidRuntime(6398): java.lang.RuntimeException: Unable to start activity ComponenTinfo{Com.KeySoft.openGuide/com.KeySoft.openGuide.Activities.Top20}: android.database.sqlite.sqliteMisuseException: library routIne called out of sequence 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.app.ActivityThread.access$600(ActivityThread.java:127) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1159) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.os.Handler.dispatchmessage(Handler.java:99) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.os.Looper.loop(Looper.java:137) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.app.ActivityThread.main(ActivityThread.java:4507) 11-16 15:16:41.241: E/AndroidRuntime(6398): at java.lang.reflect.Method.invokeNative(Native Method) 11-16 15:16:41.241: E/AndroidRuntime(6398): at java.lang.reflect.Method.invoke(Method.java:511) 11-16 15:16:41.241: E/AndroidRuntime(6398): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978) 11-16 15:16:41.241: E/AndroidRuntime(6398): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745) 11-16 15:16:41.241: E/AndroidRuntime(6398): at dalvik.system.NativeStart.main(Native Method) 11-16 15:16:41.241: E/AndroidRuntime(6398): Caused by: android.database.sqlite.sqliteMisuseException: library routIne called out of sequence 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.database.sqlite.sqliteQuery.nativeFillWindow(Native Method) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.database.sqlite.sqliteQuery.fillWindow(sqliteQuery.java:86) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.database.sqlite.sqlitecursor.fillWindow(sqlitecursor.java:164) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.database.sqlite.sqlitecursor.getCount(sqlitecursor.java:156) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.database.Abstractcursor.moveToPosition(Abstractcursor.java:161) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.database.Abstractcursor.moveToFirst(Abstractcursor.java:201) 11-16 15:16:41.241: E/AndroidRuntime(6398): at com.KeySoft.openGuide.Activities.Top20.sqlShopsVissza(Top20.java:546) 11-16 15:16:41.241: E/AndroidRuntime(6398): at com.KeySoft.openGuide.Activities.Top20.listakKirajzolaSAEsValtas(Top20.java:165) 11-16 15:16:41.241: E/AndroidRuntime(6398): at com.KeySoft.openGuide.Activities.Top20.onCreate(Top20.java:113) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.app.Activity.performCreate(Activity.java:4469) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.app.instrumentation.callActivityOnCreate(instrumentation.java:1052) 11-16 15:16:41.241: E/AndroidRuntime(6398): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
E D I T:
好吧,所以我在关闭我的应用程序中的所有数据库连接之前关闭了所有游标,现在我得到了这个结果:
11-16 20:00:28.409: E/AndroidRuntime(7548): FATAL EXCEPTION: main 11-16 20:00:28.409: E/AndroidRuntime(7548): java.lang.RuntimeException: Unable to start activity ComponenTinfo{Com.KeySoft.openGuide/com.KeySoft.openGuide.Activities.Top20}: java.util.ConcurrentModificationException 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.app.ActivityThread.access$600(ActivityThread.java:127) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1159) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.os.Handler.dispatchmessage(Handler.java:99) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.os.Looper.loop(Looper.java:137) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.app.ActivityThread.main(ActivityThread.java:4507) 11-16 20:00:28.409: E/AndroidRuntime(7548): at java.lang.reflect.Method.invokeNative(Native Method) 11-16 20:00:28.409: E/AndroidRuntime(7548): at java.lang.reflect.Method.invoke(Method.java:511) 11-16 20:00:28.409: E/AndroidRuntime(7548): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978) 11-16 20:00:28.409: E/AndroidRuntime(7548): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745) 11-16 20:00:28.409: E/AndroidRuntime(7548): at dalvik.system.NativeStart.main(Native Method) 11-16 20:00:28.409: E/AndroidRuntime(7548): Caused by: java.util.ConcurrentModificationException 11-16 20:00:28.409: E/AndroidRuntime(7548): at java.util.WeakHashMap$HashIterator.next(WeakHashMap.java:165) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.database.sqlite.sqliteDatabase.closeClosable(sqliteDatabase.java:1250) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.database.sqlite.sqliteDatabase.close(sqliteDatabase.java:1220) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.database.sqlite.sqliteOpenHelper.close(sqliteOpenHelper.java:265) 11-16 20:00:28.409: E/AndroidRuntime(7548): at com.KeySoft.openGuide.DB_Adapter.close(DB_Adapter.java:273) 11-16 20:00:28.409: E/AndroidRuntime(7548): at com.KeySoft.openGuide.Activities.Top20.sqlShopsVissza(Top20.java:558) 11-16 20:00:28.409: E/AndroidRuntime(7548): at com.KeySoft.openGuide.Activities.Top20.listakKirajzolaSAEsValtas(Top20.java:165) 11-16 20:00:28.409: E/AndroidRuntime(7548): at com.KeySoft.openGuide.Activities.Top20.onCreate(Top20.java:113) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.app.Activity.performCreate(Activity.java:4469) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.app.instrumentation.callActivityOnCreate(instrumentation.java:1052) 11-16 20:00:28.409: E/AndroidRuntime(7548): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
我的代码中有问题的部分是我的Top20 Activity中的一个函数,它当前是以下函数:
protected void getShopsFromsql(String whichTablE){ db.open(); cursor c; if(whichTable.equals("Top20")){ c = db.getAllTop20titles(); } else if (whichTable.equals("Latest10")){ c = db.getAllLatest10titles(); } else{ c = db.getAllShopsFulltitles(); } if (c.moveToFirst()) { do { addShopToList(c.getString(1),c.getString(2),c.getString(4),c.getString(5),c.getString(12),c.getString(11),c.getString(3)); }while (c.moveToNext()); } c.close(); db.close(); //App Crashes here... why? }
db肯定是我的数据库,我用Google搜索了这个@L_674_46@,当然,当我想在一个线程上编辑一个值并通过另一个线程迭代相同的值(这次是背景AsyncTask)时,它会发生,但我有一个单例数据库适配器我在这里读到这种数据库实现最适合Android应用程序.
我有一个带有单个数据库的扩展Application类,我每次都调用这个数据库.
public class MyApp extends Application { private static DB_Adapter globalDatabase; @Override public void onCreate() { super.onCreate(); globalDatabase = new DB_Adapter(this); } public static DB_Adapter getDB() { return globalDatabase; }
}
在我的应用程序中引用数据库,如下所示:
public class Top20 extends Activity { private DB_Adapter db; private MyApp myApp; @Override public void onCreate(Bundle savedInstanceStatE){ super.onCreate(savedInstanceStatE); setContentView(R.layout.top20); myApp = (MyApp) getApplication(); db = myApp.getDB(); //...........morecode...etc..
所以:
我的问题是:
为什么会出现此@L_674_46@?
我在做这个单例数据库实现吗?
谢谢你的建议,
亚当
以上是大佬教程为你收集整理的android – SQLite:库程序不按顺序调用 – 如何解决这个崩溃问题?全部内容,希望文章能够帮你解决android – SQLite:库程序不按顺序调用 – 如何解决这个崩溃问题?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。