Stetho:在控制台中看不到网络呼叫

Ada*_*itz 7 java android stetho

使用Stetho的一切都在我的示例应用程序中运行得很好,我在浏览了这个YouTube教程(SQLite,SharedPreferences show)之后进行了测试,除了看到我喜欢的网络调用.

我在加载应用程序时进行了大量的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());
Run Code Online (Sandbox Code Playgroud)

然后我还在底部加入了一个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;
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,我也有适当的依赖

compile 'com.facebook.stetho:stetho:1.3.0'
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ron*_*ers 8

我遇到了错过早期网络呼叫的相同问题,但是有一种简单的方法可以使用简单断点查看所有呼叫,因为您可以连接到"暂停"应用程序:

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

- >你现在应该看到所有(网络)电话(如果Stetho当然是正确集成的)

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

  • 你的Stetho init是正确的,我用了相同的结构.

  • 要查看网络调用,您需要在http客户端中添加"StethoInterceptor()".我刚开始使用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();
    
    Run Code Online (Sandbox Code Playgroud)