我正在使用Dark Sky Forecast API来检索一些天气信息.
当我阅读官方文档时,我发现"选项"部分描述了查询参数的用法.
例如,
可以可选地通过使用查询参数来修改API请求.它将回应以下内容:
callback = [callback]:将API响应作为JSONP返回.使用此功能时请小心,因为向公众公开API密钥存在安全隐患,如果滥用,将导致API密钥重新启动.但是,如果开发个人或内部使用的应用程序,这是一种方便的方法.
units = [setting]:以默认的英制单位以外的单位返回API响应.特别是,可以进行以下设置:
我们:默认,如上所述.
si:以SI为单位返回结果.特别是,属性现在具有以下单位:
...
我知道如何通过电话获取天气信息
https://api.forecast.io/forecast/APIKEY/LATITUDE,LONGITUDE
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将查询参数与它结合起来.
有任何想法吗?
2015/10/23更新
感谢Logan Kearns,使用?参数解决了我的问题.确保查询参数为小写.
https://api.forecast.io/forecast/APIKEY/LATITUDE,LONGITUDE?lang=zh-tw&units=si
Run Code Online (Sandbox Code Playgroud) 根据我的经验,只要我将.apk文件上传到Internal test track,预发布报告就会自动开始。我.apk几天前上传了我的文件,但预发布报告从未开始,它只显示消息:
正在进行测试;这些测试可能需要几个小时才能完成。稍后再检查。
正如它所指出的那样,“这些测试可能需要几个小时才能完成。” 我已经等了好几天了,无法得到结果。是否需要配置任何设置才能开始测试?
我目前正在将我的项目架构从MVP转换为MVVM。当我在处理它时,我发现有些东西使我感到困惑:
在ioschedScheduleViewModelFactory.kt项目中,工厂实现ViewModelProvider.Factory:
class ScheduleViewModelFactory(
private val userEventRepository:DefaultSessionAndUserEventRepository
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(ScheduleViewModel::class.java)) {
return ScheduleViewModel(LoadUserSessionsByDayUseCase(userEventRepository)) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
}
Run Code Online (Sandbox Code Playgroud)
在codelab的DetailViewModelFactory.java Sunshine项目中,工厂扩展了ViewModelProvider.NewInstanceFactory:
public class DetailViewModelFactory extends ViewModelProvider.NewInstanceFactory {
private final SunshineRepository mRepository;
private final Date mDate;
public DetailViewModelFactory(SunshineRepository repository, Date date) {
this.mRepository = repository;
this.mDate = date;
}
@Override
public <T extends ViewModel> T create(Class<T> modelClass) { …Run Code Online (Sandbox Code Playgroud) 我最近在我的 Android 应用程序中采用了 MVVM。为了解决应用生命周期的底层问题,谷歌发布了LiveData。
LiveData 的使用有不同的场景,正如Jose Alcérreca 写的中篇文章所指出的,你可以使用 SingleLiveEvent 或类似事件包装器模式的东西。
我想确保SingleLiveEvent或事件包装器模式,这将是在 Android MVVM 架构中与 LiveData 一起使用的最佳实践。我发现今年(2018 年)的Google I/O 应用程序没有使用SingleLiveEvent,而是使用事件包装器模式。
之前我在android-architecture项目上开了一个issue,一开始我在寻求官方回复,但似乎根本没有任何评论。因此,我想听听已经使用这些东西并对其进行反思的开发人员的建议。
请分享您的宝贵经验,在此先感谢您。
android android-livedata android-architecture-lifecycle android-architecture
最近在学习如何使用Kotlin Coroutines的同时,看了几篇相关的文章。但其中之一让我感到困惑:Android 上的协程(第三部分):真正的工作
正如它指出的那样:
注意:Room 使用自己的调度程序在后台线程上运行查询。您的代码不应使用 withContext(Dispatchers.IO) 来调用暂停房间查询。它会使代码复杂化并使您的查询运行得更慢。
在我看到这些段落的时候似乎有道理,但是当我打开一个 Android 项目并尝试深入研究时,问题出现了,Android Studio 警告我:
挂起函数“yourMethod”只能从协程或其他挂起函数调用
我现在在这里冻结,因为文章告诉我不要使用withContext(Dispatchers.IO). 我现在想知道我应该使用withContext(Dispatchers.Main)还是使用GlobalScope.launch来运行我的查询?
我一直在学习如何在我的项目中使用 Epoxy。我正在通过运行示例项目来学习这个库。一切都很好,直到我深入研究网格跨度设置。我发现自己对它的网格系统感到困惑。
正如您在示例应用程序中看到的,ViewHolders 可以分为 3 个部分。这些部分可以特别用模型表示,例如HeaderViewModel_、ButtonBindingModel_和CarouselModelGroup。
init RecyclerView 的代码如下:
EpoxyRecyclerView recyclerView = (EpoxyRecyclerView) findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
Run Code Online (Sandbox Code Playgroud)
根据官方文档:
如果使用 GridLayoutManager,这将自动将跨度计数与 EpoxyController 同步。
我发现HeaderViewModel_并CarouselModelGroup正确同步了跨度,但ButtonBindingModel_不是。我一直在示例代码中搜索“跨度”或“网格”这个词,我只是不明白为什么ButtonBindingModel_可以将其跨度设置为 1。
如果我将 RecyclerView 的跨度设置从 2 更改为 3:
EpoxyRecyclerView recyclerView = (EpoxyRecyclerView) findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
Run Code Online (Sandbox Code Playgroud)
HeaderViewModel_并且CarouselModelGroup仍然保持同步完整跨度,但跨度ButtonBindingModel_仍然为1。
我想知道是否有一种方法可以使跨度ButtonBindingModel_达到完整跨度,以及通过代码(以编程方式)或通过布局来设置HeaderViewModel_和CarouselModelGroup设置特定跨度的方法。请帮我解决这个问题,我很感激。
android ×5
android-architecture-components ×1
android-architecture-lifecycle ×1
android-mvvm ×1
android-room ×1
api ×1
epoxy ×1
google-play ×1
kotlin ×1
mvvm ×1
weather ×1
weather-api ×1