PDA

View Full Version : خطا هنگام فراخوانی رکورد زیاد



majid_i68
دوشنبه 05 مرداد 1394, 18:52 عصر
سلام دوستان

توی برنامه ام در دیتابیس ام 1000 رکورد رو فرداخوانی میکنم و در لیست ویو نمایش میدم.. وقتی تعداد رکورد ها رو کم میکنم مثلا 100 مشکلی نیست اما وقتی 1000 رکورد رو میخوام فراخوانی کنم از برنامه خارج میشه..کمک کنید ممنون

s3rv3r
دوشنبه 05 مرداد 1394, 22:29 عصر
چجوری؟
یه کدی
یه لاگ کتی بزار حداقل

majid_i68
سه شنبه 06 مرداد 1394, 00:23 صبح
private void refresh() {
// TODO Auto-generated method stub



db.open();
// int s=db.count("book","name");
int s=200;
Name=new String[s];

for(int i=0; i<s ; i++)
{
Name[i]=db.name_disply("book", i);

}
db.close();

//lمتد پرکردن آرایه


}


public Integer count(String table,String field) {

Cursor cu=mydb.rawQuery("select * from "+table+" group by "+ field , null);
int a=cu.getCount();
return a;
// lمتد تعداد رکورد در دیتابیس برای طول ارایه
}


public String Display_Name ( String table ,int row)
{
String s="";


Cursor cu=mydb.rawQuery("select * from " +table, null);
cu.moveToPosition(row);
s=cu.getString(1);
return s;

// متد خواندن نام

}

majid_i68
سه شنبه 06 مرداد 1394, 11:55 صبح
متد هام رو اشتباه فرستادم.

مطمن هستم مشکلی ندارن

majid_i68
سه شنبه 06 مرداد 1394, 12:00 عصر
فکر کنم بخاطر اینکه من داده ها رو توی ارایه میریزم و بعد ارایه رو در لیست نشون میدم .. سرعت رم پایین میاد...

از چه تکنیک های دیگه ای میشه استفاده کرد
تکنیکی به اسم Lazy Loading این رو چطور میشه ازش استفاده کرد؟؟

hamid_hr
سه شنبه 06 مرداد 1394, 12:10 عصر
بنظر من
شما باید از paging استفاده کنین
یعنی اول مثلا 50 تا یا 100 تا یا هر چند تا رو لود کنین وقتی طرف رسید به ته لیست باز 50 تا دیگه رو لود کنین
مثل همون viber,telegram

majid_i68
سه شنبه 06 مرداد 1394, 12:19 عصر
با این روش آشنایی ندارم .. میشه نمونه مثالی بزنید یا لینکی برای آموزش قرار بدید ممنونم که پاسخگو هستید

s3rv3r
سه شنبه 06 مرداد 1394, 13:35 عصر
LogCat خطا رو بزار. 1000 تا رکورد چیزی نیست که بخواد فورس کلوز بده

majid_i68
سه شنبه 06 مرداد 1394, 14:51 عصر
اگه بیش از 140 رکورد رو از دیتابیس بخونم خارج میشه از برنامه.. اما اگه با فیلد id .. اما اگه ده تا دکمه بزارم و بگم هر دکمه صد تا رکورد رو بازیبابی کنه مشکلی پیش نمیاد..

اینم logcat وقتی 1000 ا رکورد رو با هم میریزم در اریه و بعد ارایه رو در لیست اکتیوتی نمایش میدم//


07-28 11:02:27.747: D/dalvikvm(1922): GC_CONCURRENT freed 247K, 5% free 6616K/6919K, paused 0ms+0ms
07-28 11:02:27.807: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:28.007: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:28.117: D/dalvikvm(1922): GC_FOR_ALLOC freed 236K, 6% free 6771K/7175K, paused 0ms
07-28 11:02:28.137: I/dalvikvm-heap(1922): Grow heap (frag case) to 7.411MB for 784412-byte allocation
07-28 11:02:28.157: D/dalvikvm(1922): GC_FOR_ALLOC freed 4K, 6% free 7533K/7943K, paused 0ms
07-28 11:02:28.157: E/SQLiteDatabase(1922): close() was never explicitly called on database 'data/data/com.example.labkhand/databases/majid20'
07-28 11:02:28.157: E/SQLiteDatabase(1922): android.database.sqlite.DatabaseObjectNotClosedExc eption: Application did not close the cursor or database object that was opened here
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.database.sqlite.SQLiteDatabase.openDatabas e(SQLiteDatabase.java:1007)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.database.sqlite.SQLiteDatabase.openDatabas e(SQLiteDatabase.java:986)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.database.sqlite.SQLiteDatabase.openDatabas e(SQLiteDatabase.java:962)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at com.example.labkhand.DataBase.chekdb(DataBase.java :49)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at com.example.labkhand.DataBase.usable(DataBase.java :60)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at com.example.labkhand.Main.onCreate(Main.java:57)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.app.Activity.performCreate(Activity.java:4 465)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1049)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1920)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:1981)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.app.ActivityThread.access$600(ActivityThre ad.java:123)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1147)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.os.Handler.dispatchMessage(Handler.java:99 )
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.os.Looper.loop(Looper.java:137)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at android.app.ActivityThread.main(ActivityThread.jav a:4424)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at java.lang.reflect.Method.invokeNative(Native Method)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at java.lang.reflect.Method.invoke(Method.java:511)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:784)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)
07-28 11:02:28.157: E/SQLiteDatabase(1922): at dalvik.system.NativeStart.main(Native Method)
07-28 11:02:28.177: D/dalvikvm(1922): GC_CONCURRENT freed 32K, 6% free 7534K/7943K, paused 0ms+10ms
07-28 11:02:28.187: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 6% free 7534K/7943K, paused 10ms
07-28 11:02:28.187: I/dalvikvm-heap(1922): Grow heap (frag case) to 7.740MB for 348776-byte allocation
07-28 11:02:28.197: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 6% free 7875K/8327K, paused 0ms
07-28 11:02:28.207: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 15% free 7109K/8327K, paused 10ms
07-28 11:02:28.207: I/dalvikvm-heap(1922): Grow heap (frag case) to 7.741MB for 784412-byte allocation
07-28 11:02:28.227: D/dalvikvm(1922): GC_CONCURRENT freed <1K, 6% free 7875K/8327K, paused 0ms+0ms
07-28 11:02:28.257: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 6% free 7875K/8327K, paused 10ms
07-28 11:02:28.257: I/dalvikvm-heap(1922): Grow heap (frag case) to 8.073MB for 348776-byte allocation
07-28 11:02:28.267: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 6% free 8216K/8711K, paused 10ms
07-28 11:02:28.287: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 15% free 7450K/8711K, paused 0ms
07-28 11:02:28.287: I/dalvikvm-heap(1922): Grow heap (frag case) to 8.074MB for 784412-byte allocation
07-28 11:02:28.317: D/dalvikvm(1922): GC_CONCURRENT freed <1K, 6% free 8216K/8711K, paused 0ms+0ms
07-28 11:02:28.327: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:28.327: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:28.347: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 6% free 8216K/8711K, paused 10ms
07-28 11:02:28.347: I/dalvikvm-heap(1922): Grow heap (frag case) to 8.407MB for 348776-byte allocation
07-28 11:02:28.357: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 6% free 8557K/9095K, paused 10ms
07-28 11:02:28.367: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 15% free 7791K/9095K, paused 0ms
07-28 11:02:28.367: I/dalvikvm-heap(1922): Grow heap (frag case) to 8.407MB for 784412-byte allocation
07-28 11:02:28.387: D/dalvikvm(1922): GC_CONCURRENT freed <1K, 6% free 8557K/9095K, paused 0ms+0ms
07-28 11:02:28.407: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 6% free 8558K/9095K, paused 10ms
07-28 11:02:28.407: I/dalvikvm-heap(1922): Grow heap (frag case) to 8.740MB for 348776-byte allocation
07-28 11:02:28.417: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 7% free 8898K/9479K, paused 10ms
07-28 11:02:28.427: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 15% free 8133K/9479K, paused 0ms
07-28 11:02:28.427: I/dalvikvm-heap(1922): Grow heap (frag case) to 8.740MB for 784412-byte allocation
07-28 11:02:28.447: D/dalvikvm(1922): GC_CONCURRENT freed <1K, 7% free 8898K/9479K, paused 0ms+0ms
07-28 11:02:28.467: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 7% free 8899K/9479K, paused 0ms
07-28 11:02:28.467: I/dalvikvm-heap(1922): Grow heap (frag case) to 9.073MB for 348776-byte allocation
07-28 11:02:28.477: D/dalvikvm(1922): GC_FOR_ALLOC freed 0K, 7% free 9239K/9863K, paused 10ms
07-28 11:02:28.487: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 15% free 8474K/9863K, paused 0ms
07-28 11:02:28.487: I/dalvikvm-heap(1922): Grow heap (frag case) to 9.073MB for 784412-byte allocation
07-28 11:02:28.517: D/dalvikvm(1922): GC_CONCURRENT freed <1K, 7% free 9239K/9863K, paused 0ms+0ms
07-28 11:02:28.547: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 14% free 8815K/10247K, paused 10ms
07-28 11:02:28.587: D/dalvikvm(1922): GC_CONCURRENT freed <1K, 7% free 9581K/10247K, paused 0ms+0ms
07-28 11:02:28.607: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 14% free 9156K/10631K, paused 10ms
07-28 11:02:28.627: D/dalvikvm(1922): GC_FOR_ALLOC freed <1K, 7% free 9922K/10631K, paused 0ms
07-28 11:02:28.647: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 9497K/10631K, paused 10ms
07-28 11:02:28.667: D/dalvikvm(1922): GC_FOR_ALLOC freed <1K, 4% free 10263K/10631K, paused 0ms
07-28 11:02:28.677: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 9838K/11015K, paused 0ms
07-28 11:02:28.697: D/dalvikvm(1922): GC_FOR_ALLOC freed <1K, 4% free 10604K/11015K, paused 0ms
07-28 11:02:28.717: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 10179K/11399K, paused 10ms
07-28 11:02:28.737: D/dalvikvm(1922): GC_FOR_ALLOC freed <1K, 4% free 10946K/11399K, paused 0ms
07-28 11:02:28.777: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 11287K/12551K, paused 10ms
07-28 11:02:28.787: D/dalvikvm(1922): GC_FOR_ALLOC freed 768K, 14% free 10861K/12551K, paused 10ms
07-28 11:02:28.817: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 11202K/12551K, paused 10ms
07-28 11:02:28.827: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:28.827: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:28.847: D/dalvikvm(1922): GC_FOR_ALLOC freed <1K, 5% free 11969K/12551K, paused 10ms
07-28 11:02:28.877: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 12310K/13703K, paused 0ms
07-28 11:02:28.887: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 14% free 11885K/13703K, paused 10ms
07-28 11:02:28.917: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 12226K/13703K, paused 0ms
07-28 11:02:28.947: D/dalvikvm(1922): GC_FOR_ALLOC freed 767K, 11% free 12567K/14087K, paused 10ms
07-28 11:02:28.977: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 12908K/14471K, paused 10ms
07-28 11:02:29.007: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 13250K/14855K, paused 10ms
07-28 11:02:29.027: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 11% free 13591K/15239K, paused 0ms
07-28 11:02:29.057: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 9% free 13932K/15239K, paused 0ms
07-28 11:02:29.087: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 9% free 14273K/15623K, paused 10ms
07-28 11:02:29.117: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 9% free 14614K/16007K, paused 10ms
07-28 11:02:29.147: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 9% free 14955K/16391K, paused 10ms
07-28 11:02:29.177: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 9% free 15297K/16775K, paused 10ms
07-28 11:02:29.197: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 9% free 15638K/17159K, paused 0ms
07-28 11:02:29.227: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 9% free 15979K/17543K, paused 0ms
07-28 11:02:29.257: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 9% free 16320K/17927K, paused 0ms
07-28 11:02:29.287: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 10% free 16661K/18311K, paused 0ms
07-28 11:02:29.317: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 8% free 17002K/18311K, paused 10ms
07-28 11:02:29.337: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:29.337: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:29.357: D/dalvikvm(1922): GC_FOR_ALLOC freed 767K, 8% free 17344K/18695K, paused 10ms
07-28 11:02:29.387: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 8% free 17685K/19079K, paused 10ms
07-28 11:02:29.417: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 8% free 18026K/19463K, paused 10ms
07-28 11:02:29.447: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 8% free 18367K/19847K, paused 10ms
07-28 11:02:29.477: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 8% free 18708K/20231K, paused 10ms
07-28 11:02:29.497: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 8% free 19049K/20615K, paused 0ms
07-28 11:02:29.527: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 8% free 19391K/20999K, paused 0ms
07-28 11:02:29.557: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 8% free 19732K/21383K, paused 0ms
07-28 11:02:29.587: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 7% free 20073K/21383K, paused 10ms
07-28 11:02:29.617: D/dalvikvm(1922): GC_FOR_ALLOC freed 766K, 7% free 20414K/21767K, paused 10ms
07-28 11:02:42.237: D/dalvikvm(1922): GC_FOR_ALLOC freed 835K, 6% free 20825K/22151K, paused 20ms
07-28 11:02:42.247: I/dalvikvm-heap(1922): Grow heap (frag case) to 21.550MB for 1219884-byte allocation
07-28 11:02:42.307: D/dalvikvm(1922): GC_FOR_ALLOC freed 7K, 6% free 22009K/23367K, paused 10ms
07-28 11:02:42.687: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:42.687: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:43.197: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:43.197: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:43.707: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:43.737: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:44.217: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:44.227: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:44.727: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:44.757: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:45.237: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:45.267: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:45.747: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:45.747: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'
07-28 11:02:46.417: I/dalvikvm(1922): threadid=3: reacting to signal 3
07-28 11:02:46.427: I/dalvikvm(1922): Wrote stack traces to '/data/anr/traces.txt'

s3rv3r
سه شنبه 06 مرداد 1394, 15:41 عصر
به خاطر طرز کد نوشتنت ارجاع به دیتابیس خیلی زیاده و تو یکی از همین ارجاعات کانکشن دیتابیس به مشکل میخوره ظاهرا

جای اینکه یه کوئری بزنید و با استفاده از while رکورد هارو به آرایت بریزی دارید برای هر row داری کوئری میزنی شما

majid_i68
سه شنبه 06 مرداد 1394, 16:13 عصر
private void refresh() {
// TODO Auto-generated method stub

try
{
db.open();
int s=db.count("book","name");
Name=new String[s];

for(int i=0; i<s ; i++)
{
Name[i]=db.name_disply("book", i);

}
db.close();
}
catch(Exception ex)
{
// db.close();
}
}



public String name_disply(String table,int row)
{
Cursor cu=mydb.rawQuery("select * from "+table+" where read<>1", null);
cu.moveToPosition(row);
String s=cu.getString(1);
return s;

}

ممنونم دوست عزیز.. این متدهای من هست..به نظرت مشکل دارند؟

s3rv3r
سه شنبه 06 مرداد 1394, 17:02 عصر
for(int i=0; i<s ; i++)
{
Name[i]=db.name_disply("book", i);

}


داخل حلقه گذاشتی و به تعداد حلقه دائم درحال کوئری زدن هست . ا
یه بار قبل حلقه کوئری بزن بعدش رکوردها با while هرکاری دوس داری بکن

trackCursor.moveToFirst(); while (trackCursor.moveToNext()) { }

majid_i68
سه شنبه 06 مرداد 1394, 21:12 عصر
for(int i=0; i<s ; i++)
{
Name[i]=db.name_disply("book", i);

}


داخل حلقه گذاشتی و به تعداد حلقه دائم درحال کوئری زدن هست . ا
یه بار قبل حلقه کوئری بزن بعدش رکوردها با while هرکاری دوس داری بکن

trackCursor.moveToFirst();while(trackCursor.moveTo Next()){}[/QUOTE]


اگه بیشتر توضیح بدید ممنون میشم

majid_i68
سه شنبه 06 مرداد 1394, 23:14 عصر
دوست خوبم s3rv3r ممنونم از راهنمایت .. مشکلم رو با کمکت حل کردم با این متد

public String[] fuul(String[] n,int l)
{


n=new String[l];
int j=0;
Cursor cu=mydb.rawQuery("select name from book where read<>1 ", null);
cu.moveToFirst();
while(j<l)
{

n[j]=cu.getString(0);
cu.moveToNext();
j++;


}
return n;

}