🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

Android 핵심 개념 완벽 정리 - 슬라이드 1/11
A

AI Generated

2025. 11. 3. · 25 Views

Android 핵심 개념 완벽 정리

Android 앱 개발의 필수 핵심 개념을 초급자 관점에서 정리했습니다. Activity, Intent, Lifecycle 등 실무에서 바로 활용할 수 있는 기본 개념들을 코드 예제와 함께 학습할 수 있습니다.


카테고리:Flutter
언어:Kotlin
메인 태그:#Android
서브 태그:
#Activity#Intent#Lifecycle#ViewModel

들어가며

이 글에서는 Android 핵심 개념 완벽 정리에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. Activity_기본_구조
  2. Intent_화면_전환
  3. Activity_Lifecycle
  4. ViewModel_데이터_관리
  5. RecyclerView_리스트_구현
  6. SharedPreferences_데이터_저장
  7. Coroutine_비동기_처리
  8. Fragment_화면_구성
  9. Notification_알림_생성
  10. Room_Database_사용

1. Activity 기본 구조

개요

Activity는 Android 앱의 화면을 나타내는 기본 컴포넌트입니다. 사용자와 상호작용하는 UI를 담당합니다.

코드 예제

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // UI 초기화 코드
        val button = findViewById<Button>(R.id.myButton)
        button.setOnClickListener {
            Toast.makeText(this, "버튼 클릭!", Toast.LENGTH_SHORT).show()
        }
    }
}

설명

onCreate()에서 레이아웃을 설정하고 UI 컴포넌트를 초기화합니다. AppCompatActivity를 상속받아 Activity를 구현합니다.


2. Intent 화면 전환

개요

Intent는 Activity 간 화면 전환이나 데이터 전달을 위한 메시징 객체입니다. 명시적/암시적 Intent로 구분됩니다.

코드 예제

// 화면 전환
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("userName", "홍길동")
intent.putExtra("age", 25)
startActivity(intent)

// SecondActivity에서 데이터 받기
val userName = intent.getStringExtra("userName")
val age = intent.getIntExtra("age", 0)

설명

Intent에 데이터를 담아 다른 Activity로 전달하고, 받는 쪽에서는 getStringExtra() 등으로 데이터를 추출합니다.


3. Activity Lifecycle

개요

Activity는 생성부터 종료까지 여러 상태를 거치며, 각 상태마다 콜백 메서드가 호출됩니다.

코드 예제

class MainActivity : AppCompatActivity() {
    override fun onStart() {
        super.onStart()
        Log.d("Lifecycle", "Activity가 화면에 표시됨")
    }

    override fun onPause() {
        super.onPause()
        Log.d("Lifecycle", "Activity가 일시정지됨")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d("Lifecycle", "Activity가 종료됨")
    }
}

설명

onCreate → onStart → onResume → onPause → onStop → onDestroy 순으로 생명주기가 진행되며, 각 단계에서 필요한 작업을 수행합니다.


4. ViewModel 데이터 관리

개요

ViewModel은 UI 관련 데이터를 생명주기에 안전하게 저장하고 관리하는 클래스입니다.

코드 예제

class MainViewModel : ViewModel() {
    private val _count = MutableLiveData<Int>(0)
    val count: LiveData<Int> = _count

    fun incrementCount() {
        _count.value = (_count.value ?: 0) + 1
    }
}

// Activity에서 사용
val viewModel: MainViewModel by viewModels()
viewModel.count.observe(this) { count ->
    textView.text = "Count: $count"
}

설명

ViewModel은 화면 회전 등의 상황에서도 데이터를 유지하며, LiveData를 통해 UI에 자동으로 데이터 변경을 반영합니다.


5. RecyclerView 리스트 구현

개요

RecyclerView는 효율적으로 대량의 데이터를 리스트 형태로 표시하는 컴포넌트입니다.

코드 예제

class MyAdapter(private val items: List<String>) :
    RecyclerView.Adapter<MyAdapter.ViewHolder>() {

    class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val textView: TextView = view.findViewById(R.id.textView)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.item_layout, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.textView.text = items[position]
    }

    override fun getItemCount() = items.size
}

설명

Adapter 패턴을 사용해 데이터를 ViewHolder에 바인딩하며, 화면에 보이는 항목만 생성하여 메모리를 효율적으로 사용합니다.


6. SharedPreferences 데이터 저장

개요

SharedPreferences는 키-값 쌍으로 간단한 데이터를 로컬에 영구 저장하는 방법입니다.

코드 예제

// 데이터 저장
val sharedPref = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE)
with(sharedPref.edit()) {
    putString("userName", "홍길동")
    putInt("userAge", 25)
    putBoolean("isLoggedIn", true)
    apply()
}

// 데이터 읽기
val userName = sharedPref.getString("userName", "")
val userAge = sharedPref.getInt("userAge", 0)
val isLoggedIn = sharedPref.getBoolean("isLoggedIn", false)

설명

설정 값, 사용자 정보 등 작은 데이터를 저장할 때 사용하며, edit()로 수정하고 apply()로 변경사항을 저장합니다.


7. Coroutine 비동기 처리

개요

Coroutine은 비동기 작업을 간결하게 처리할 수 있는 Kotlin의 경량 스레드입니다.

코드 예제

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        lifecycleScope.launch {
            val result = withContext(Dispatchers.IO) {
                // 네트워크 요청이나 DB 작업
                delay(2000)
                "데이터 로드 완료"
            }
            // UI 업데이트 (Main 스레드)
            textView.text = result
        }
    }
}

설명

lifecycleScope로 생명주기에 맞춰 코루틴을 실행하고, Dispatchers.IO로 백그라운드 작업을 수행한 뒤 자동으로 메인 스레드로 돌아옵니다.


8. Fragment 화면 구성

개요

Fragment는 Activity 내에서 재사용 가능한 UI 모듈로, 하나의 Activity에 여러 Fragment를 조합할 수 있습니다.

코드 예제

class MyFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_my, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        view.findViewById<Button>(R.id.button).setOnClickListener {
            // 버튼 클릭 처리
        }
    }
}

설명

onCreateView에서 레이아웃을 생성하고, onViewCreated에서 뷰를 초기화합니다. Activity처럼 독립적인 생명주기를 가집니다.


9. Notification 알림 생성

개요

Notification은 사용자에게 앱 외부에서 정보를 전달하는 알림 메시지입니다.

코드 예제

val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE)
    as NotificationManager

val notification = NotificationCompat.Builder(this, "channel_id")
    .setSmallIcon(R.drawable.ic_notification)
    .setContentTitle("새로운 메시지")
    .setContentText("안녕하세요! 메시지가 도착했습니다.")
    .setPriority(NotificationCompat.PRIORITY_HIGH)
    .build()

notificationManager.notify(1, notification)

설명

NotificationCompat.Builder로 알림을 구성하고, NotificationManager로 알림을 표시합니다. 채널 ID는 Android 8.0 이상에서 필수입니다.


10. Room Database 사용

개요

Room은 SQLite를 쉽게 사용할 수 있도록 추상화한 Android의 공식 데이터베이스 라이브러리입니다.

코드 예제

@Entity(tableName = "users")
data class User(
    @PrimaryKey(autoGenerate = true) val id: Int = 0,
    @ColumnInfo(name = "user_name") val userName: String,
    val age: Int
)

@Dao
interface UserDao {
    @Insert
    suspend fun insert(user: User)

    @Query("SELECT * FROM users")
    suspend fun getAllUsers(): List<User>
}

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

설명

Entity로 테이블을 정의하고, DAO에서 데이터 접근 메서드를 선언하며, Database 클래스로 전체 DB를 관리합니다. Coroutine과 함께 사용하면 효율적입니다.


마치며

이번 글에서는 Android 핵심 개념 완벽 정리에 대해 알아보았습니다. 총 10가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#Android #Activity #Intent #Lifecycle #ViewModel

#Android#Activity#Intent#Lifecycle#ViewModel#Flutter

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

함께 보면 좋은 카드 뉴스