成功运行一次后,Android Studio无法打开.错误是:
C:\ Program Files(x86)\ Android\android-studio\system\caches中的文件被锁定.Android Studio将无法启动.
有没有人找到它的解决方案?
重命名方法重新分解不仅重命名变量,而且包括注释的任何地方(它不能确定注释中的字符串是否真的是变量名).
例如:
class ABC{
private String username;
private void X(){
String str = "username";
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在重命名类成员后username,Android Studio将表现得像:
class ABC{
private String mUsername;
private void X(){
String str = "mUsername"; // it should be remain same as String str = "username";
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更改Android Studio中的重新分解设置?
通过使用 LiveData 的最新版本“androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha03”,我使用 LiveData 的新构建块(LiveData + Coroutine)为 ViewModel 中名为“搜索产品”的功能开发了代码使用 Retrofit 执行同步网络调用并相应地更新 ViewModel 中的不同标志(isLoading、isError)。我在“查询”LiveData 上使用 Transforamtions.switchMap,因此只要 UI 中的“查询”发生更改,“搜索产品”代码就会使用 Transformations.switchMap 开始执行。一切正常,除了我想在“查询”LiveData 发生更改时取消之前的改造调用。目前我看不到任何方法来做到这一点。任何帮助,将不胜感激。
class ProductSearchViewModel : ViewModel() {
val completableJob = Job()
private val coroutineScope = CoroutineScope(Dispatchers.IO + completableJob)
// Query Observable Field
val query: MutableLiveData<String> = MutableLiveData()
// IsLoading Observable Field
private val _isLoading = MutableLiveData<Boolean>()
val isLoading: LiveData<Boolean> = _isLoading
val products: LiveData<List<ProductModel>> = query.switchMap { q ->
liveData(context = coroutineScope.coroutineContext) {
emit(emptyList())
_isLoading.postValue(true)
val service = MyApplication.getRetrofitService()
val response = …Run Code Online (Sandbox Code Playgroud) android kotlin kotlin-extension android-livedata kotlin-coroutines
我想将网络 DTO(其余 api 响应)转换为 Kotlin 中的数据库 DTO。网络 DTO 包含一个列表作为字段,该列表中的项目还包含其他数据的列表。下面是网络响应或网络DTO的表示
{
categories: [
{
catId: 0,
name: "Category A",
products: [
{
prodId: 900,
name: "Product 1"
ingredients: [
{
name: "Ingre 1"
}
]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想提取并转换所有类别的列表,然后将所有产品的列表,然后将所有成分的列表转换为三个单独的列表,并且还想将这些数据转换为各自的数据库 DTO。
我已经创建了一段代码来执行所需的任务,但我确信存在性能问题,并且必须有一些更 kotlinish 的解决方案。
val dbCategories = networkCategories?.map {
DBCategory(
catId = it.catId,
name = it.name
)
}
val dbProducts = networkCategories?.map { it.networkProducts }?.map {
it.map { singleNetworkProduct ->
DBProduct(
prodId = singleNetworkProduct.prodId,
name = singleNetworkProduct.name,
)
}
}?.flatten() …Run Code Online (Sandbox Code Playgroud)