【问题标题】:Stetho: Don't see Network calls in consoleStetho:在控制台中看不到网络调用
【发布时间】:2016-02-16 22:20:31
【问题描述】:

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

在加载应用程序时,我进行了大量的 API 调用。例如,在我的Service.java 类中,如下链接所示。也许它没有出现在 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'

谢谢!

【问题讨论】:

    标签: java android stetho


    【解决方案1】:

    我遇到了丢失早期网络调用的相同问题,但有一种简单的方法可以使用简单的断点查看所有调用,因为您可以连接到“暂停”的应用程序:

    • 只需在调试中运行您的应用程序并在您的第一个网络调用之前放置一个断点(例如,在应用程序的 onCreate 中的某个位置,但当然是在 Stetho 初始化之后:-)
    • 打开 Chrome (chrome://inspect/#devices),您应该会看到您的 Android 应用程序(此时它正在等待断点)
    • 只需点击“检查”,开发工具就会打开。
    • 如果未选择网络选项卡,请选择它
    • 点击调试窗口中的“恢复”按钮(不是“运行”按钮!)

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

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

    • 您的 Stetho 初始化是正确的,我使用了相同的构造。

    • 要查看网络调用,您需要将“StethoInterceptor()”添加到您的 http 客户端。我刚开始使用 Android,所以我无法立即告诉您如何在您的代码中执行此操作,但这是我在 Retrofit 2 (2.0.0-beta4) 中插入 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();
      

    【讨论】:

    • 谢谢!我将上面的模式与 Retrofit 一起使用,可以看到所有的网络请求。
    猜你喜欢
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    相关资源
    最近更新 更多