Activity là gì?
1. Giới thiệu
Activity là thành phần cơ bản nhất của ứng dụng Android, đại diện cho một màn hình giao diện người dùng.
2. Đặc điểm của Activity
- Mỗi Activity là một entry point vào ứng dụng
- Có thể có nhiều Activities trong một app
- Một Activity có thể khởi động Activity khác
- Quản lý UI và xử lý tương tác người dùng
3. Tạo Activity cơ bản
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyAppTheme {
Surface {
Greeting("Android")
}
}
}
}
}
@Composable
fun Greeting(name: String) {
Text(text = "Hello, $name!")
}4. Khai báo trong Manifest
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>5. Loại Activity
ComponentActivity (Compose)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
// Compose UI
}
}
}AppCompatActivity (XML Views)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}6. Tạo Activity với Compose
class SettingsActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
SettingsScreen(
onBackClick = { finish() }
)
}
}
}
@Composable
fun SettingsScreen(onBackClick: () -> Unit) {
Column {
TopAppBar(
title = { Text("Settings") },
navigationIcon = {
IconButton(onClick = onBackClick) {
Icon(Icons.Default.ArrowBack, "Back")
}
}
)
// Settings content
}
}7. Truyền dữ liệu giữa Activities
Gửi dữ liệu
val intent = Intent(this, DetailActivity::class.java).apply {
putExtra("user_id", 123)
putExtra("user_name", "Alice")
}
startActivity(intent)Nhận dữ liệu
class DetailActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val userId = intent.getIntExtra("user_id", 0)
val userName = intent.getStringExtra("user_name") ?: ""
setContent {
DetailScreen(userId, userName)
}
}
}8. Kết thúc Activity
// Kết thúc Activity hiện tại
finish()
// Kết thúc và xóa stack
finishAffinity()
// Kết thúc với result
setResult(Activity.RESULT_OK, Intent().apply {
putExtra("result", "Success")
})
finish()9. LaunchMode
<!-- Mặc định: Activity mới được thêm vào stack -->
<activity android:launchMode="standard" ... />
<!-- Chỉ một instance, tái sử dụng nếu đã tồn tại -->
<activity android:launchMode="singleTop" ... />
<!-- Một instance duy nhất trong task -->
<activity android:launchMode="singleTask" ... />
<!-- Một task riêng biệt -->
<activity android:launchMode="singleInstance" ... />10. Activity với ViewModel
class MainActivity : ComponentActivity() {
private val viewModel: MainViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val uiState by viewModel.uiState.collectAsState()
MainScreen(
state = uiState,
onEvent = viewModel::onEvent
)
}
}
}📝 Tóm tắt
- Activity là màn hình giao diện của app
- Kế thừa từ ComponentActivity (Compose) hoặc AppCompatActivity (XML)
- onCreate là nơi setup UI
- Truyền dữ liệu qua Intent extras
- LaunchMode kiểm soát behavior của Activity trong stack
Last updated on