وجود قاعدة بيانات لا يؤثر على أداء واستجابة التطبيق. الذي يؤثر هو كيفية التعامل معها.
فمثلا قراءة البيانات على ال GUI thread تؤثر على الأداء ويفضل دائما ان تكون عمليات ال DB على thread آخر.
أمر آخر وهو عملية الإتصال مع قاعدة البيانات، هناك من يجد أن فتح وغلق الإتصال هو حل مناسب. بالنسبة لي أقوم بفتح الإتصال مرة واحدة فقط عند أول تعامل مع قاعدة البيانات ومن ثم أترك الإتصال مفتوحا الى أن يتم غلق التطبيق، حيث يقوم نظام التشغيل بغلق كل ال resources المستخدمة (ومنها الإتصال مع قاعدة البيانات). سبب ذلك هو الحوجة الدائمة الى استخدام قاعدة البيانات على أكثر من thread. وفي أندرويد عندما تحاول الكتابة على قاعدة بيانات في اكثر من thread باستخدام أكثر من connection سيحدث لك خطأ SQLiteDatabaseLockedException: database is locked لذلك في مثل هذه الحالات يجب التأكد من استخدام connection واحد فقط.
أيضا عندما تحتاج الى عرض قائمة من ال Objects على ListView، في بعض الحالات يكون عدد العناصر كبير جدا، لذلك عملية قراءة جميع العناصر في List وإدخالها الى ال Adapter ومن ثم عرضها تؤثر على الأداء بشكل كبير جدا. في هذه الحالة يجب أن تستخدم ال cursor (الذي يأتي حين عملية الإستعلام) في ال Adapter.
التعليقات