Android Veri Depolama Yöntemleri
Android platformu geliştiricilere veri depolama işlemleri için birkaç farklı seçenek ve kullanabilecekleri strateji sunmaktadır. Bu yöntemleri ise rehber niteliği taşıyan sitede şu şekilde sıralamışlar.
- Shared Preferences: Store private primitive data in key-value pairs.
- Internal Storage: Store private data on the device memory.
- External Storage: Store public data on the shared external storage.
- SQLite Databases: Store structured data in a private database.
- Network Connection: Store data on the web with your own network server.
Shared Preferences
Uygulamanız içerisinde kullanıcınız uygulama ayarlarını ve buna benzer bir takım basit değerleri Shared Preferences yapısı altında saklayabilirsiniz. Shared Preferences yapısı bu değerleri key-value mantığını temel alarak saklamaktadır.
1
2
3
|
SharedPreferences pref =
PreferenceManager.getDefaultSharedPreferences(this);
String username = pref.getString(“username”, “n/a”);
|
Shared Preferences içeriğini değiştirmek isterseniz Editor nesnesine ihtiyacınız olacaktır.
1
2
3
4
5
6
|
SharedPreferences pref =
PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = pref.edit();
edit.putString(“username”, “billy”);
edit.putString(“user_id”, “65”);
edit.commit();
|
Local Files
Android uygulamaları geliştirirken external veya internal olmak üzere dosyalara bir şeyler kaydedebilirsiniz. Herbir uygulama, uygulamaya özel olmak üzere düzenlenmiş olan sqlite database dosyalarının veya ayarların tutulduğu bir alana sahiptir. Her bir activity bu alanlara erişim için helper yapısına sahiptir.
Dosyalara yazma işlemi için ufak bir kod parçası paylaşılacak olursa,
1
2
3
4
5
6
|
// Use Activity method to create a file in the writeable directory
FileOutputStream fos = openFileOutput(“filename”, MODE_WORLD_WRITEABLE);
// Create buffered writer
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fos));
writer.write(“Hi, I’m writing stuff”);
writer.close();
|
Dosyadan okurken ise bu sefer yapmamız gereken şey ise, BufferedReader kullanmak.
1
2
3
4
5
6
7
8
9
|
BufferedReader input = null;
input = new BufferedReader(
new InputStreamReader(openFileInput(“myfile”)));
String line;
StringBuffer buffer = new StringBuffer();
while ((line = input.readLine()) != null) {
buffer.append(line + “\n”);
}
String text = buffer.toString();
|
SQLite
Daha fazla kontrol için, yerel database yapılarını düzenlemek ve SQL sorgularını çalıştırmakla sorumlu olan SQLiteOpenHelper yapısını kullanarak SQLite içerisinde verileri depolayabilirsiniz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class TodoItemDatabase extends SQLiteOpenHelper {
public TodoItemDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// These is where we need to write create table statements.
// This is called when database is created.
@Override
public void onCreate(SQLiteDatabase db) {
// SQL for creating the tables
}
// This method is called when database is upgraded like
// modifying the table structure,
// adding constraints to database, etc
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
// SQL for upgrading the tables
}
}
|
Pek çok durumda ise, Android uygulama geliştirirken doğrudan SQL yapısı ile etkileşimde bulunmak yerine, verileri Java model yapıları olarak database içerisinde saklamak amacıyla ORM(object relational mappers) yapılarının kullanımı tercih edilir.
Object Relational Mappers
SQLite database sistemine doğrudan erişmek yerine, SQL yapılarını daha rahat kontrol edebilmek amacıyla “higher-level wrappers” kullanımının hiç bir sıkıntısı bulunmamaktadır. Android platformu için kullanılmak üzere pek çok ORM kütüphanesi bulunmaktadır.
- SugarORM
- Siminov
- greenDAO
- ORMLite
- androrm
Bu yazı dizi içerisinde ORMLite kütüphanesinin kullanımı incelenecektir.
Network Connection
Android cihazları internet bağlantısı sağladığından dolayı, geliştirmiş olduğunuz uygulamalarda verileri uzak bir sunucu da depolamak isteyebilir. Burada ilk olarak önemli görünen nokta, bu network bağlantısının sağlıklı bir şekilde nasıl sağlanacağı olmalıdır. Bütün bu iletişim adımlarının sağlıklı bir şekilde sağlandığı durumda ise, uygulamanız gerekli verileri cloud üzerinde sağlanan ve gerekli düzenlemeleri yapılmış olan network server’ ına rahatlıkla aktarma işlemi gerçekleştirilebilir.