要给出“Android SharedViewModels与Clean Architecture repositories”包含代码示例的解决方法,我们可以按照以下步骤进行:
创建Android项目:首先,在Android Studio中创建一个新的Android项目。
配置Gradle依赖项:在项目的build.gradle文件中,添加以下依赖项:
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
// Room Persistence Library
implementation "androidx.room:room-runtime:2.2.6"
annotationProcessor "androidx.room:room-compiler:2.2.6"
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class SharedViewModel : ViewModel() {
private val _data = MutableLiveData()
val data: LiveData = _data
fun setData(value: String) {
_data.value = value
}
}
interface UserRepository {
suspend fun getUser(id: String): User
suspend fun saveUser(user: User)
}
class UserRepositoryImpl(private val userDao: UserDao) : UserRepository {
override suspend fun getUser(id: String): User {
return userDao.getUser(id)
}
override suspend fun saveUser(user: User) {
userDao.saveUser(user)
}
}
class UserLocalDataSource(private val userDao: UserDao) {
suspend fun getUser(id: String): User {
return userDao.getUser(id)
}
suspend fun saveUser(user: User) {
userDao.saveUser(user)
}
}
class SharedViewModel(private val userRepository: UserRepository) : ViewModel() {
// ...
suspend fun getUser(id: String): User {
return userRepository.getUser(id)
}
suspend fun saveUser(user: User) {
userRepository.saveUser(user)
}
}
class MainActivity : AppCompatActivity() {
private val viewModel: SharedViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
viewModel.data.observe(this, Observer { data ->
// 处理数据更新
})
viewModel.setData("Hello, World!")
}
}
这些是使用Android SharedViewModels与Clean Architecture repositories的解决方法,并包含了一些代码示例。请注意,这只是一个简单的示例,您可能需要根据您的实际需求进行适当的修改和调整。