Stetho:在控制台中看不到网络调用

Stetho: Don't see Network calls in console

Stetho 的所有功能在我的示例应用程序中都运行良好,我在完成此 YouTube tutorial(SQLite、SharedPreferences 显示)后进行了测试,除了看到我希望开始工作的网络调用。

我在加载应用程序时进行了多次 API 调用。例如,一个在我的 Service.java Class 中,如下面的 link 所示。也许它没有出现在 Stetho 中,因为 API 调用发生在 Stetho 可以打开之前加载应用程序时。如果有任何想法可以使此功能正常工作,我们将不胜感激。

我在 MainActivity.java 中初始化 Stetho。在 onCreate() 我有

    // Initialize Stetho
    Stetho.initialize(
            Stetho.newInitializerBuilder(this)
                    .enableDumpapp(new SampleDumperPluginsProvider(this))
                    .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
                    .build());

然后我还在底部添加了一个 Stetho Class

// Create class for Stetho
private static class SampleDumperPluginsProvider implements DumperPluginsProvider {
    private final Context mContext;

    public SampleDumperPluginsProvider(Context context){mContext = context;}

    @Override
    public Iterable<DumperPlugin> get() {
        ArrayList<DumperPlugin> plugins = new ArrayList<>();
        for (DumperPlugin defaultPlugin : Stetho.defaultDumperPluginsProvider(mContext).get()) {
            plugins.add(defaultPlugin);
        }
        //plugins.add(new SyncAdapterFragment());
        return plugins;
    }
}

当然我也有合适的依赖关系

compile 'com.facebook.stetho:stetho:1.3.0'

谢谢!

我有同样的问题,缺少早期网络调用,但有一种简单的方法可以使用简单的断点查看所有调用,因为您可以连接到 'paused' 应用程序:

  • 只是 运行 您的应用程序处于调试状态,并在您的第一次网络调用之前放置一个断点(例如,在您的应用程序的 onCreate 中的某处,但当然是在 Stetho 初始化之后:-)
  • 打开 Chrome (chrome://inspect/#devices),你应该会看到你的 Android 应用程序(此时正在等待断点)
  • 只需单击 'inspect',开发工具就会打开。
  • select 网络选项卡(如果未 selected
  • 点击调试中的'resume'按钮window(不是'run'按钮!)

-> 您现在应该可以看到所有(网络)呼叫(当然,如果 Stetho 已正确集成)

  • 我只在我的设备上试过这个,不确定模拟器的行为是否相同

  • 你的 Stetho init 是正确的,我使用了相同的构造。

  • 要查看网络调用,您需要在您的 http 客户端中添加一个 'StethoInterceptor()'。我只是从 Android 开始,所以我无法立即告诉您如何在您的代码中执行此操作,但这是我在 Retrofit 2 (2.0.0-beta4)[=11 中插入 Stetho (1.3.1) 的方式=]

    // add a Facebook StethoInterceptor to the OkHttpClient's list of network interceptors
    OkHttpClient okClient = new OkHttpClient.Builder()
            .addNetworkInterceptor(new StethoInterceptor())
            .build();
    
    mRetrofit = new Retrofit.Builder()
            .client(okClient)
            .baseUrl(BASE_URL)
            .build();