我正在尝试实现一个CoroutineWorker来在一个安卓应用程序中做一些后台工作。我使用的第三方库使用onConnected、onChanged等回调函数。我如何在CoroutineWorker中使用这个库?
这是我到目前为止所拥有的
override suspend fun doWork(): Result {
return try {
val appContext = applicationContext
var mReporter: StepCountReporter?
val mStepCountObserver = obj
我可以通过存储库类中托管的retrofit.this代码从网络接收数据:
fun getQuestionsFromWebServer() {
val webService = AppModule()
val call = webService.provideModirfaniService().getQuestions()
call.enqueue(object : Callback<List<Question>> {
override fun onResponse(
call: Cal
我正在使用CoroutineWorker从房间数据库中获取一些数据,并将其发送到服务器,然后再次从数据库中删除该特定答案。我使用的是存储库模式。
class SendLocalAnswerToServer(ctx: Context, val params: WorkerParameters) :
CoroutineWorker(ctx, params) {
var useCaseHandler: UseCaseHandler? = null
var deleteAnswerFromTable: DeleteAnswerFromTable? = null
private var upl
我刚刚开始使用协程,我不太确定我使用它的方式是否正确。我的android应用程序只有一个带有几个片段和对话框片段的活动。我创建了一个功能,询问用户他/她是否接受做某事。该应用程序显示了一个带有是/否按钮的DialogFragment。如果用户单击Yes,它将关闭对话框并执行作业。
我想在activity的viewModelScope中开始繁重的工作,这样当用户导航到其他片段时,它将在后台事件中继续执行。
家长的ViewModel:
class ActivityViewModel: ViewModel(){
fun doJob(){
viewModelScope.laun
当我从suspend方法调用中获得结果时,我正在尝试更新它们之间的UI。例如,下面是我的ViewModel类。方法a()、b()和c()都是挂起方法。 class MainViewModel : ViewModel() {
lateinit var userLiveData: LiveData<String>
var repo = MainRepo()
fun startTest() {
userLiveData = liveData {
var a = repo.a()
Sy
我已经读了几十篇帖子,但不知何故,似乎没有一个答案对我有效。
我想要实现的是在片断中等待ViewModel使用Room执行操作。
Dao:
@Query("SELECT * FROM my_table WHERE id = :id")
suspend fun getMyData(id: Long): List<Item>
在ViewModel中,我不需要返回任何内容,只需使用数据库中的一些数据更新变量即可。我在这里也尝试过其他方法,比如返回一个延迟的
ViewModel:
suspend fun updateData(myItem: Item) {
for
我在CM中使用View Model first方法,其中我创建了一个ViewModel,并在创建之后立即激活它。在ViewModel的构造函数中,我使用以下方法启动了一个协程:
Coroutine.BeginExecute(Example().GetEnumerator());
我的视图中有一个繁忙指示器,并且我将busy属性(即绑定到busy indicator控件上的IsBusy属性的TwoWay )设置为true。当为true时,指示器显示;当为false时,它是隐藏的。
所以我的协程看起来像这样:
IsBusy = true;
var example = client.AsyncOp(
我想在视图模式中对一个方法进行单元测试,但每次都失败了,并且浏览了许多网站并堆叠了答案,但都没有帮助。我只是想在我的视图模型中测试一个方法,即loadWeatherForeCast 我浏览了以下链接,Error calling Dispatchers.setMain() in unit test https://android.jlelse.eu/mastering-coroutines-android-unit-tests-8bc0d082bf15 https://proandroiddev.com/mocking-coroutines-7024073a8c09 import androi
我在代码中使用回调流从Firebase数据库中检索数据。以下是我的代码 @ExperimentalCoroutinesApi
suspend fun getUserOrder() = callbackFlow<UserOrder>{
println("Current Thread name is ${Thread.currentThread().name}")
databaseReference.child("Order").addValueEventListener(object : Valu
我需要在异步循环中获得未来的结果,它类似于
但是PY35和PY34中的asyncio是完全不同的,下面是可以在PY34中正确运行的代码,但是在PY35中它将在yield from处暂停,并且永远不会返回。
# PY34
class RelayClient(asyncio.Protocol):
pass
class Server(asyncio.Protocol):
def data_received(self, data):
# I need to connect to another address, and get future result at cur
我在使用RoomDatabase实现搜索功能时遇到了问题。
我最近实现了搜索功能的改进,它是好的,没有问题。
但是,在没有互联网的情况下,如果用户想要在产品之间进行搜索,会给出一个错误,这与没有连接到互联网有关。
因此,我决定用room实现搜索功能,并尝试了很多代码,但没有得到合适的结果。填充编辑文本并单击按钮后,将返回按标题打印而不是返回结果。
下面是我尝试过的一些代码:
房间表实体:
@entity(tableName = cart )
class RoomTables {
@primarykey
val id : Int ,
val title : String
}
Dao
我想要做的是,根据Result.failure或Result.success的存在,将它映射到一个Result.failure或Result.success。
我想这件事应该用:
val a: Throwable? = Throwable()
val b = a?.let { Result.failure<Unit>(it) } ?: Result.success(Unit)
但是我得到的错误是:Expression of type kotlin.Result cannot be used as a left operand of '?:',这似乎意味着我的let的
我想给viewModelscope注射,但我就是做不到。 class PostPageSource @Inject constructor(
val repository: MyRepository,
val scope: CoroutineScope,
val mapper: MyMapper
) : PageKeyedDataSource<Int, Posts>() { 错误输出如下: [Dagger/MissingBinding] kotlinx.coroutines.CoroutineScope cannot be provided without an @Provide
一段时间以来,我们正在使用Kotlin,我们目前关注的一件事是使用协程来处理我们想要异步运行的操作。
虽然示例用法很清楚,而且很有效,但我在以一种干净的方式将其集成到我们的架构中时遇到了一些问题。当查看针对域的类的方法实现时,其想法是它易于阅读,并且异步功能带来的“噪音”尽可能少。我知道我不能在没有真正使用异步的情况下使用它。所以写这样的东西是我想要的:
val data = someService.getData().await()
// work with data
但这是我想要防止的:
launch(UI) {
val data
val job = async(CommonPo