티스토리 뷰
안녕하세요, 안드로이드 앱 개발을 공부하시는 여러분! 이번에는 안드로이드 앱에서 데이터를 저장하고 관리하는 기초적인 방법들을 살펴보겠습니다. 사용자의 정보, 앱의 상태, 또는 설정과 같은 다양한 데이터를 어떻게 효과적으로 다룰 수 있는지에 대해 알아봅시다.
1. SharedPreferences를 활용한 간단한 데이터 저장
안드로이드에서는 SharedPreferences를 사용하여 간단한 키-값 형태의 데이터를 저장할 수 있습니다. 이를 활용하여 사용자 설정이나 간단한 데이터를 저장할 수 있습니다.
// 데이터 저장
val preferences = getSharedPreferences("myPrefs", Context.MODE_PRIVATE)
val editor = preferences.edit()
editor.putString("username", "JohnDoe")
editor.apply()
// 데이터 불러오기
val savedUsername = preferences.getString("username", "Guest")
2. 파일 시스템을 활용한 데이터 저장
좀 더 복잡한 데이터나 구조적인 데이터를 저장할 때는 파일 시스템을 활용할 수 있습니다. 텍스트 파일 또는 이진 파일을 사용하여 데이터를 저장하고 불러올 수 있습니다.
// 데이터 저장
val filename = "userData.txt"
val data = "User information: JohnDoe, 28"
context.openFileOutput(filename, Context.MODE_PRIVATE).use {
it.write(data.toByteArray())
}
// 데이터 불러오기
val fileContent = context.openFileInput(filename).bufferedReader().use {
it.readText()
}
3. SQLite 데이터베이스를 활용한 데이터 관리
더 복잡하고 구조적인 데이터를 다룰 때는 SQLite 데이터베이스를 활용할 수 있습니다. 안드로이드에서는 SQLiteOpenHelper를 상속받아 데이터베이스를 생성하고 관리할 수 있습니다.
// 데이터베이스 생성 및 업그레이드
class MyDatabaseHelper(context: Context) : SQLiteOpenHelper(context, "myDatabase", null, 1) {
override fun onCreate(db: SQLiteDatabase?) {
// 테이블 생성 및 초기 데이터 추가
db?.execSQL("CREATE TABLE users (_id INTEGER PRIMARY KEY, username TEXT)")
db?.execSQL("INSERT INTO users (username) VALUES ('JohnDoe')")
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
// 데이터베이스 업그레이드 로직
}
}
// 데이터베이스 사용 예시
val dbHelper = MyDatabaseHelper(context)
val db = dbHelper.writableDatabase
// 데이터 삽입
val values = ContentValues().apply {
put("username", "JaneDoe")
}
val newRowId = db.insert("users", null, values)
4. Room 라이브러리를 활용한 데이터베이스
Room 라이브러리는 SQLite를 더 편리하게 다룰 수 있도록 도와주는 라이브러리입니다. 데이터베이스, 엔터티, DAO 등을 정의하여 사용할 수 있습니다.
// 엔터티 정의
@Entity(tableName = "users")
data class User(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
val username: String
)
// 데이터베이스 정의
@Database(entities = [User::class], version = 1)
abstract class MyAppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
// DAO 정의
@Dao
interface UserDao {
@Insert
fun insert(user: User)
@Query("SELECT * FROM users")
fun getAllUsers(): List<User>
}
// 데이터베이스 사용 예시
val db = Room.databaseBuilder(context, MyAppDatabase::class.java, "myAppDatabase").build()
// 데이터 삽입
val user = User(username = "Alice")
db.userDao().insert(user)
// 데이터 조회
val allUsers = db.userDao().getAllUsers()
5. 통합 예제: 사용자 목록 관리 앱
이제 위에서 배운 방법들을 활용하여 간단한 사용자 목록 관리 앱을 만들어보겠습니다. 사용자 목록을 추가하고 저장하며, 어떻게 데이터를 관리할 수 있는지 확인해봅시다.
// MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var db: MyAppDatabase
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
db = Room.databaseBuilder(this, MyAppDatabase::class.java, "myAppDatabase").build()
setupUI()
}
private fun setupUI() {
binding.addButton.setOnClickListener { onAddClick() }
loadUsers()
}
private fun onAddClick() {
val username = binding.usernameEditText.text.toString()
if (username.isNotBlank()) {
val user = User(username = username)
db.userDao().insert(user)
loadUsers()
binding.usernameEditText.text.clear()
} else {
Toast.makeText(this, "Please enter a username", Toast.LENGTH_SHORT).show()
}
}
private fun loadUsers() {
val users = db.userDao().getAllUsers()
val userList = users.joinToString("\n") { it.username }
binding.userListTextView.text = if (userList.isNotBlank()) userList else "No users yet"
}
}
마무리
이제 여러분은 안드로이드 앱에서 데이터를 어떻게 저장하고 관리하는지에 대해 기본적인 개념을 알게 되었습니다. SharedPreferences, 파일 시스템, SQLite 데이터베이스, 그리고 Room 라이브러리를 사용하여 데이터를 효과적으로 관리하는 방법을 배웠습니다. 다음에는 사용자 입력과 이벤트 처리에 대해 알아보도록 하겠습니다. 계속해서 흥미로운 Kotlin 코딩되세요! 🚀
'안드로이드 첫번째 걸음' 카테고리의 다른 글
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (9. 화면 간 전환과 다양한 액티비티 생명주기) (0) | 2023.12.27 |
---|---|
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (8. 사용자 입력과 이벤트 처리) (0) | 2023.12.26 |
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (6. XML 레이아웃과 상호작용) (0) | 2023.12.22 |
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (5. 널 안정성) (0) | 2023.12.22 |
Kotlin 기초 : 안드로이드 앱 개발을 위한 시작 (4. 클래스와 객체) (2) | 2023.12.21 |
- Total
- Today
- Yesterday
- 내부데이터베이스
- 코루틴
- fragment생명주기
- 부동산 경매
- 클린아키텍처
- 안드로이드기초
- 부동산
- 안드로이드 앱 개발
- 안드로이드개발
- 경매
- RxJava
- 안드로이드
- 비동기처리
- 비동기
- coroutine
- 코틀린
- 사이버보안
- kotlin
- 생명주기
- MVVM패턴
- 모듈화
- RoomDatabase
- Fragment
- cipher
- 디자인패턴
- 앱개발
- Android
- UI스레드
- 기초
- 안드로이드앱개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |