我希望在我的应用程序启动的短时间内摆脱白色,但内容尚未显示.
我的主要活动是使用一个样式(来自Manifest),它@style/Theme.Sherlock.Light.DarkActionBar以背景设置为扩展<item name="android:background">@android:color/transparent</item>.我的布局中没有任何地方可以使用白色背景颜色,但它在应用程序启动期间会出现一小段时间.
在HierarchyViewer中,我导出了图层并检查了布局层次结构中确实没有白色实体.
在绘制布局之前,什么设置控制背景颜色?谢谢.
就像标题所说,在开发AppEngine项目时如何使用Kotlin?我正在使用带有Gradle的IntelliJ/Android Studio作为我的构建工具.
我想否定以下表达式:
return SpUtils.loadEMail()?.isEmpty() ?: false
如果我添加一个!在表达之前,就像
return !SpUtils.loadEMail()?.isEmpty() ?: false
IDE(Android Studio)告诉我
在类型为kotlin.Boolean的可空接收器上只允许安全(?.)或非空的断言(!!.)调用?
我怎么否定这种表达方式呢?
抬起头来:我正在从记忆中写下一些内容,所以我可能会有一些不正确的概念.
Java具有编写匿名函数的能力.当您拥有某种事件的侦听器接口时,这非常有用.举个例子:
button.setOnClickListener(new View.OnClickListener(View v) {
@Override
public void onClick(View v) {
// handle the action here
}
});
Run Code Online (Sandbox Code Playgroud)
匿名监听器将被编译为类似于的类OnClickListener$1.class.这是Java语言的基础设计决策.一切都是对象,甚至是匿名函数.
当您想要编写功能更强大的代码库时,这就成了一个问题.大量的匿名类会创建一个大的类计数,这在Android等受限平台上可能会出现问题.
在Kotlin中,从源代码的角度来看,函数更加一流.我的问题是,Kotlin是否比Java使用匿名类更有效地将这些函数编译为字节代码,还是会遇到与Java中的大类计数相同的问题?
谢谢,
我正在将我的应用程序转换为使用ViewModels。为了实例化ViewModels 我使用自定义Factory和 Dagger 2 进行依赖注入。它看起来像这样:
@Singleton
class ViewModelFactory @Inject constructor(
private val viewModels: Map<Class<out ViewModel>, @JvmSuppressWildcards Provider<ViewModel>>
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T
= viewModels[modelClass]!!.get() as T
}
@Target(AnnotationTarget.FUNCTION) @Retention(AnnotationRetention.RUNTIME) @MapKey
annotation class ViewModelKey(val value: KClass<out ViewModel>)
@Module
abstract class ViewModelModule {
@Binds
abstract fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory
@Binds @IntoMap @ViewModelKey(FooViewModel::class)
abstract fun fooViewModel(viewModel: FooViewModel): ViewModel
}
Run Code Online (Sandbox Code Playgroud)
现在我面临的问题,如何访问参数/附加Bundle我的Fragment还是Activity内部的ViewModel。这是必要的,因为视图以及 中的数据ViewModel …
android dependency-injection kotlin android-architecture-components
在M9公告中,据说现在支持渐进式编译.这也适用于Gradle,尤其是Android吗?如果是,如何启用它?
我开始在Kotlin工作,我需要解析一个长的十六进制字符串,这在java中可以完成
Long.parseLong("ED05265A", 16);
Run Code Online (Sandbox Code Playgroud)
虽然我能找到,但我在Kotlin找不到任何东西
val i = "2".toLong()
Run Code Online (Sandbox Code Playgroud)
这不是我要找的!
在我从头开始编写任何内容之前,是否有内置函数?
我对kotlin很新,我想知道它是否可能,并且如果从配对对象中访问伴随对象之外的方法和变量是违反最佳实践的.
例如
class A {
fun doStuff(): Boolean = return true
companion object{
public fun stuffDone(): Boolean = return doStuff()
}
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西
谢谢
为什么带有赋值和等式检查的if语句的计算结果为false?
public static void test() {
boolean test1 = true;
if (test1 = false || test1 == false) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么要打印No?
给定(简化说明)
我们的一项服务在内存中有很多实例.大约85%是独一无二的.我们需要对这些项目进行非常快速的基于密钥的访问,因为它们在单个堆栈/调用中经常被查询.这个单一的上下文非常优化性能.
所以我们开始将它们放入字典中.表现还可以.
在这种情况下,尽可能快地访问项目是最重要的.确保在读取发生时没有写入操作.
问题
与此同时,我们达到了字典可以存储的项目数量的限制.
Die Arraydimensionen haben den unterstützten Bereich überschritten.
bei System.Collections.Generic.Dictionary`2.Resize(Int32 newSize, Boolean forceNewHashCodes)
bei System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
Run Code Online (Sandbox Code Playgroud)
这转化为The array dimensions have exceeded the supported range.
像Memcached这样的解决方案在这个特定情况下太慢了.它是一个封装在单个服务中的独立的非常具体的用例
因此,我们正在寻找替代此特定方案的字典.
目前我找不到一个支持这个.我错过了什么吗?有人能指出我吗?
作为替代方案,如果不存在,我们正在考虑自己实施一个.
我们想到了两种可能性.从头开始构建或包装多个词典.
包装多个词典
搜索一个项目时,我们可以看一下HasCode键,并使用它的起始编号作为包装词典列表的索引.虽然这似乎很容易让我闻到,但这意味着哈希码计算两次(内部字典一次由我们一次)(这种情况真的非常具有性能).
我知道像字典那样交换基类是绝对的最后一种可能性,我想避免它.但是目前看起来没有办法让对象更加独特,或者从数据库中获取字典的性能或者在其他地方保存性能.
我也意识到"要注意优化",但较低的性能会严重影响其背后的业务需求.
kotlin ×7
android ×3
gradle ×2
java ×2
.net ×1
.net-4.6.1 ×1
android-architecture-components ×1
background ×1
c# ×1
collections ×1
dictionary ×1
hex ×1
long-integer ×1
styles ×1
themes ×1