在Android Studio中,当我使用+版本号(如com.android.support:recyclerview-v7:21.+)时,我会收到"避免在版本号中使用+"警告.当我使用特定版本号时,我不能总是使用最新版本.我的项目中有很多依赖项.如何检查依赖项是否具有较新版本?是否有Android Studio插件 - 或类似的东西 - 在有更新版本的依赖项时通知我?
编辑: Android工作室突出显示过时的Android支持库和Google Play服务.但是这不适用于其他自定义库.

我正在尝试使用Retrofit和OKHttp来缓存HTTP响应.我按照这个要点,结束了这段代码:
File httpCacheDirectory = new File(context.getCacheDir(), "responses");
HttpResponseCache httpResponseCache = null;
try {
httpResponseCache = new HttpResponseCache(httpCacheDirectory, 10 * 1024 * 1024);
} catch (IOException e) {
Log.e("Retrofit", "Could not create http cache", e);
}
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setResponseCache(httpResponseCache);
api = new RestAdapter.Builder()
.setEndpoint(API_URL)
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(new OkClient(okHttpClient))
.build()
.create(MyApi.class);
Run Code Online (Sandbox Code Playgroud)
这是带有Cache-Control标头的MyApi
public interface MyApi {
@Headers("Cache-Control: public, max-age=640000, s-maxage=640000 , max-stale=2419200")
@GET("/api/v1/person/1/")
void requestPerson(
Callback<Person> callback
);
Run Code Online (Sandbox Code Playgroud)
首先,我在线请求并检查缓存文件.有正确的JSON响应和标题.但是当我尝试离线请求时,我总是得到RetrofitError UnknownHostException.我还有什么办法让Retrofit从缓存中读取响应吗?
编辑:
因为OKHttp 2.0.x HttpResponseCache是Cache …
当我使用storyboard添加自定义UIView时,是否计算了UIView的正确帧大小?我不能得到正确的帧大小的UIView的 init(frame: CGRect)或init(coder aDecoder: NSCoder)或awakeFromNib().我得到了正确的大小,override func layoutSubviews()但这次视图没有添加到视图控制器的视图中.
编辑:
我想在UIView子类中执行此操作,因为我在CAGradientLayer自定义中添加了一个图层(与我的视图具有相同的大小)UIView.必须有一种比在UIViewControllers viewDidLayoutSubviews方法中设置视图更好的方法.
有两个垂直约束(超视图的尾随和前导空间),用于调整自定义视图的宽度.但是在上述方法中宽度为600,而不是屏幕宽度.
我用这个包。我console.log在slug函数的开头添加了这些。
function slug(string, opts) {
console.log('log 1: -------');
console.log('log 2: ' + string);
console.log('log 3: ' + typeof string);
string = string.toString();
....
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
log 1: -------
log 2: Yüzey Aktif Maddeler
log 3: string
/Users/------/seeder/node_modules/mongodb/lib/utils.js:99
process.nextTick(function() { throw err; });
^
TypeError: Cannot read property 'toString' of undefined
at slug (/Users/------/seeder/node_modules/slug/slug.js:16:20)
at Object.createSlug (/Users/------/seeder/seeder/utils.js:4:9)
at getContent (/Users/------/seeder/seeder/content-seeder.js:345:22)
at topic.contents.forEach.content (/Users/------/seeder/seeder/content-seeder.js:425:31)
at Array.forEach (native)
at /Users/------/seeder/seeder/content-seeder.js:424:21
at /Users/------/seeder/node_modules/mongodb/lib/collection.js:523:5
at /Users/------/seeder/node_modules/mongodb/lib/collection.js:701:5
at handleCallback (/Users/------/seeder/node_modules/mongodb/lib/utils.js:96:56)
at executeCommands …Run Code Online (Sandbox Code Playgroud) Kotlin的标准功能let定义如下:
public inline fun <T, R> T.let(block: (T) -> R): R
Run Code Online (Sandbox Code Playgroud)
这不意味着let的返回类型将是块返回的任何内容吗?
为什么这不起作用?
var a: String? = "maybe null"
val x: Boolean = a?.let {
a.contains("maybe") // note that contains returns Boolean, not Boolean?
}
Run Code Online (Sandbox Code Playgroud)
这抱怨:类型不匹配:必需Boolean,找到Boolean?它不应该返回一个Boolean因为contains函数返回一个Boolean?
我确定我误解了一些事情.也许有人可以帮助我和其他新手更好地理解.
我有一个RecyclerView看起来像这样的水平线(显然)
-------------------------------
| | | | | |
| 1 | 2 | 3 | 4 | 5 |
| | | | | |
-------------------------------
Run Code Online (Sandbox Code Playgroud)
我想做这个:
------------------------------
| / / / / |
| 1 / 2 / 3 / 4 / 5 |
| / / / / |
-------------------------------
Run Code Online (Sandbox Code Playgroud)
创建RecyclerView这样的最佳方式是什么?
注意:我不是要创建一个倾斜的分隔线。我正在尝试创建一个倾斜的布局。通过倾斜,我的意思是蒙面而不是旋转。项目应该有 amatch_parent ImageView和 a TextView。两者都应该看起来笔直,而不是旋转。还请注意第一项和最后一项。
这是一个示例:
我在中居中Toolbar。当我添加MenuItems时,内容会被推送,因此不会居中。我知道ActionMenuView是一个选项,但是SearchView这次不会扩展(另一个问题)。我尝试过contentInset属性,但是没有运气。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:gravity="center"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="4dp"
app:srcCompat="@drawable/ic_ugurlogo_white" />
</FrameLayout>
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
这是结果。红色的视图是FrameLayout。我要FrameLayout匹配Toolbar宽度。
我要如何实现?
我有以下这些工作:
我想要
我试过 async await 但它使它们同时完成(如预期的那样)。我认为这个例子可能是学习并行编程概念的好方法,比如信号量互斥锁或自旋锁。但这太复杂了,我无法理解。
我应该如何使用 Kotlin 协程来实现这些?