小编jul*_*iro的帖子

AndroidX:没有注册仪器!必须在注册仪器下运行

我正在尝试运行一个取决于上下文的本地单元测试,并遵循本指南:https://developer.android.com/training/testing/unit-testing/local-unit-tests#kotlin 我设置像我这样的项目(点击此链接:https://developer.android.com/training/testing/set-up-project):

的build.gradle(APP)

android {
compileSdkVersion 28
buildToolsVersion '27.0.3'
defaultConfig {
    minSdkVersion 21
    targetSdkVersion 27
    versionCode 76
    versionName "2.6.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    multiDexEnabled true

useLibrary 'android.test.runner'
    useLibrary 'android.test.base'
    useLibrary 'android.test.mock'

}
testOptions {
    unitTests.returnDefaultValues = true
    unitTests.all {
        // All the usual Gradle options.
        testLogging {
            events "passed", "skipped", "failed", "standardOut", "standardError"
            outputs.upToDateWhen { false }
            showStandardStreams = true
        }
    }
    unitTests.includeAndroidResources = true

}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')

androidTestImplementation("androidx.test.espresso:espresso-core:$espressoVersion", { …
Run Code Online (Sandbox Code Playgroud)

android unit-testing android-espresso android-instrumentation

23
推荐指数
5
解决办法
8365
查看次数

如何更改 JetpackCompose 上文本的内容描述

如何将 Jetpack Compose 上 TalkBack 上要读取的默认文本内容描述更改为我想要的任何文本?

android talkback android-jetpack-compose android-jetpack-compose-text

19
推荐指数
1
解决办法
5729
查看次数

Android架构组件ViewModel上下文

我正在研究谷歌的架构组件,以便将ViewModel和LiveData实现到我的应用程序,官方文档说:

注意:由于ViewModel比特定活动和片段实例更长,因此它永远不应引用View或任何可能包含对活动上下文的引用的类.如果ViewModel需要Application上下文(例如,查找系统服务),它可以扩展AndroidViewModel类并具有在构造函数中接收Application的构造函数(因为Application类扩展了Context)

在那之后,我最终得到了这样的代码:

public class ViewModelTest extends AndroidViewModel {

public ViewModelTest(Application application) {
    super(application);
}

public void test(){
    Prefs.getCurrentCode(getApplication());
}
Run Code Online (Sandbox Code Playgroud)

我应该在活动中正常实例吗?

  val viewModel2 = ViewModelProviders.of(this).get(ViewModelTest::class.java)
    viewModel2.test()
Run Code Online (Sandbox Code Playgroud)

不是很糟糕吗?要在需要访问SharedPreferences或需要上下文的任何内容时使用此应用程序变量?如果是,我应该避免在ViewModel上使用它并仅在视图上使用它吗?特别是如果我想用一个需要上下文的值更新UI组件.我有点不知道如何解决这个问题,我愿意接受任何建议.

提前致谢

android viewmodel android-context android-application-class android-livedata

11
推荐指数
1
解决办法
7291
查看次数

Android服务中的Kotlin协程

我有一个android服务,可在服务器在线时启动并与服务器同步不同类型的数据。我是Kotlin协程的新手,我正在尝试完成以下任务:

fun syncData{
//Job1 make retrofit call to server
//Job2 make retrofit call to server after job1 is done.
//Job3 make retrofit call to server after job 2 is done and so on. 
//After all jobs are done I'll stop service.
}
Run Code Online (Sandbox Code Playgroud)

我在关注这篇文章: Kotlin Coroutines在Android中的正确方法

这给我带来了这个解决方案:

fun syncData() = async(CommonPool){
    try{

        val sync1 = async(CommonPool){
            job1.sync()
        }

        val sync2 = async(CommonPool){
            job2.sync()
        }


        val sync3 = async(CommonPool){
            job3.sync()
        }

        val sync4 = async(CommonPool){
            job4.sync()
        }
        job1.await()
        job2.await()
        job3.await()
        job4.await()
    }catch …
Run Code Online (Sandbox Code Playgroud)

android-service async-await kotlin kotlinx.coroutines

9
推荐指数
2
解决办法
1735
查看次数

Retrofit 2 - 是否可以获得我正在发送和接收的 JSON 的大小?

我需要在 Android 应用程序上构建流量监视器,并且需要存储通过改造发送和接收的所有 json 的大小。使用日志我可以看到它的实际大小,但我还没有找到一种方法来获取此信息以便保存它。我也无法获得response.raw,因为它已经被解析到我的类中。有什么办法可以实现这一点吗?

编辑:将 vadkou 答案标记为最佳答案。

我没有创建新的拦截器,而是传递了 lamda 表达式:

 httpClient.addInterceptor( chain -> {
        okhttp3.Request request = chain.request();
        okhttp3.Response response = chain.proceed(request);
        if(request.body()!=null) {
            long requestLength = request.body().contentLength();
            Log.e("SERVICE GENERATOR", " CONTENT LENGTH" + requestLength);

        }
        long responseLength = response.body().contentLength();
        Log.e("SERVICE GENERATOR", " RESPONSE LENGTH" + responseLength);

        return response;

    });
Run Code Online (Sandbox Code Playgroud)

android json retrofit

5
推荐指数
1
解决办法
9005
查看次数