草庐IT

yieldIfContendedSafely

全部标签

android - 在 Android 多线程应用程序中正确使用 yieldIfContendedSafely()

在我的应用程序中,我使用AsyncTask在事务中将一些数据写入数据库。此数据库也可从UI线程访问。在查看可用的数据库方法时,我遇到了yieldIfContendedSafely()。似乎这种方法应该用于任何从单独的线程进行交易的情况。但除了以下内容外,几乎没有关于此方法的任何文档:Temporarilyendthetransactiontoletotherthreadsrun.Thetransactionisassumedtobesuccessfulsofar.DonotcallsetTransactionSuccessfulbeforecallingthis.Whenthisret

android - yieldIfContendedSafely() 会失去交易的好处吗?

我有一个在后台线程中执行的长时间运行的操作。由于操作成功完成或根本不完成对操作很重要,因此我将整个操作包装在一个事务中。在此期间,UI的各个方面需要对数据库进行只读访问。为避免阻塞UI,我尝试在后台操作的主循环中插入对db.yieldIfContendedSafely()的调用。这就是我想要的,因为UI不再被阻止,但我不完全清楚这是否会导致数据完整性丢失。yieldIfContendedSafely()的javadoc说:Temporarilyendthetransactiontoletotherthreadsrun.Thetransactionisassumedtobesuccess