我在我的Android应用程序中使用Volley库.它工作正常,但我看到OkHttp也提供了一些更多的改进.我使用以下方法将OkHttp与Volley集成:
Volley.newRequestQueue(mCtx.getApplicationContext(), new OkHttpStack());
Run Code Online (Sandbox Code Playgroud)
我的OkHttpStack类是:
public class OkHttpStack extends HurlStack {
private final OkUrlFactory mFactory;
public OkHttpStack() {
this(new OkHttpClient());
}
public OkHttpStack(OkHttpClient client) {
if (client == null) {
throw new NullPointerException("Client must not be null.");
}
mFactory = new OkUrlFactory(client);
}
@Override protected HttpURLConnection createConnection(URL url) throws IOException {
return mFactory.open(url);
}
}
Run Code Online (Sandbox Code Playgroud)
1)值得吗?我没有注意到任何明显的改进,但这可能是因为我还没有在我的服务器上实现SPDY支持.
2)OkHttp的增强功能是响应缓存.但是,凌空也是如此.我是否会遇到类似的问题:https://github.com/square/okhttp/issues/680
3)另外,我在Volley中使用两个RequestQueues - 一个用于图像,另一个用于JSON.我应该在两个队列中使用OkHttp吗?
我在玩新的 Android 设计库。CollapsingToolbarLayout 完美运行。但是,我无法将工具栏的默认状态设置为折叠。
我在活动的 onResume 中调用以下代码:
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
if(behavior!=null)
{
Log.d("DEBUG", "Behaviour is Not Null ");
int[] consumed = new int[2];
behavior.onNestedPreScroll(coordinator, appBarLayout, null, 0, 1000,consumed);
// behavior.onNestedFling(coordinator, appBarLayout, null, 0, 10000, true);
}
else
Log.d("DEBUG", "Behaviour is Null " );
Run Code Online (Sandbox Code Playgroud)
但是,params 返回的行为为空。我的 xml 代码与此处相同,除了我不使用抽屉并且 CordinatorLayout 是我的根布局。
编辑:我之前尝试将 AppBarLayout.Behavior 切换为 AppBarLayout.ScrollingViewBehavior 并将 AppBarLayout 的 layout_behavior 设置为 @string/appbar_scrolling_view_behavior,但它导致了奇怪的布局。
罗宾的回答效果很好。为了补充这一点,还可以使用 AppBarLayout 中的以下标记在 xml 中设置行为:
app:layout_behavior="android.support.design.widget.AppBarLayout$Behavior"
Run Code Online (Sandbox Code Playgroud)