扇出/扇入结果通道

我正在生产项目,从多个协同例程中消费,并推回到resultChannel。 制片人正在关闭最后一个项目后的频道。 代码永远不会结束,因为resultChannel永远不会被关闭。 如何检测并正确完成迭代,所以hasNext()返回false ? val inputData = (0..99).map { "Input$it" } val threads = 10 val bundleProducer = produce<String>(CommonPool, threads) { inputData.forEach { item -> send(item) println("Producing: $item") } println("Producing finished") close() } val resultChannel = Channel<String>(threads) repeat(threads) { launch(CommonPool) { bundleProducer.consumeEach { println("CONSUMING $it") resultChannel.send("Result ($it)") } } } val iterator = object […]

Android系统。 Mockito使用真实的对象而不是模拟

所以,我只是写简单的测试。 问题是测试运行器运行真正的“仓库”类代码,而不是模拟代码…你有什么想法,为什么我可以得到这个例外? 测试课 class SingInFacebookPresenterTest { @Mock private lateinit var view: SignInFacebookContract.View @Mock private lateinit var repository: Repository @Captor private lateinit var callback: ArgumentCaptor<RepositoryCallback.FacebookLoginImp> private lateinit var presenter: SingInFacebookPresenter private val serverToken = "token" @Before fun init() { MockitoAnnotations.initMocks(this) presenter = SingInFacebookPresenter(MockContext(), repository, view) } @Test fun facebook_login_success() { //Given val token = "token" val […]

Android室 – 使用LIKE选择查询

我试图做一个查询来搜索名称中包含文本的所有对象: @Query("SELECT * FROM hamster WHERE name LIKE %:arg0%") fun loadHamsters(search: String?): Flowable<List<Hamster>> 消息: Error:no viable alternative at input 'SELECT * FROM hamster WHERE name LIKE %' Error:There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (near "%": syntax error) Error:Unused parameter: arg0 另外我试着: @Query("SELECT * FROM hamster WHERE name LIKE […]

Dagger 2命名不能没有@Provides方法提供

试图咆哮匕首2,并与指定的提供商有问题。 我有一个简单的设置如下: // Module @Module class AppModule(private val app: App) { @Provides @AppScope fun providesApp() = app @Provides @AppScope fun provideSharedPreferences(app: App) = PreferenceManager.getDefaultSharedPreferences(app) @Provides @AppScope @Named("Uri1") fun providesUri1() = Uri.Builder().scheme("https").authority("authory1").build() @Provides @AppScope @Named("Uri2") fun providesUri2() = Uri.Builder().scheme("https").authority("authory2").build() } // Component @AppScope @Component(modules = arrayOf(AppModule::class)) interface AppComponent { fun inject(target: MainActivity) } // MainActivity @Inject […]

Corda V1.0公证集群配置问题与Gradle

我使用下面的配置来构建公证集群并启动它们。 我用这样的脚本到V14版本没关系。 但在V1弹出错误。 请帮我检查一下。 任务deployNodesRAFT(类型:net.corda.plugins.Cordform,dependsOn:['jar']){ directory "./build/nodes" networkMap "C=CH,L=Zurich,O=NotaryService0" node { name "C=CH,L=Zurich,O=NotaryService0" advertisedServices = ["corda.notary.validating.raft|C=CH,L=Zurich,O=Raft,CN=corda.notary.validating.raft"] p2pPort 10002 rpcPort 10003 notaryNodePort 10001 cordapps = [] } node { name "C=CH,L=Zurich,O=NotaryService1" advertisedServices = ["corda.notary.validating.raft|C=CH,L=Zurich,O=Raft,CN=corda.notary.validating.raft"] p2pPort 10091 rpcPort 10092 cordapps = [] notaryNodePort 10093 notaryClusterAddresses = ["localhost:10001"] } node { name "C=CH,L=Zurich,O=NotaryService2" advertisedServices = ["corda.notary.validating.raft|C=CH,L=Zurich,O=Raft,CN=corda.notary.validating.raft"] p2pPort 10094 […]

启动项目:你应该从Android还是iOS开始开发?

制作支持iOS和Android平台Native的移动项目以及您的独立开发者时。 在制作Android版本之前先从iOS版本开始是否好? 要么 在制作iOS之前先开始使用Android版本是否好? 任何评论或良好的策略? 这将有助于我在创建应用程序时创建一个时间轴。 提前致谢..

通过Android意图传递HashMap

我有一个HashMap(String,HashMap(String,Object))在我的一个活动。 我如何通过意图发送这个HashMap到另一个活动 如何将这个HashMap添加到intent extras中?

在图像周围流动textview

我花了几个小时寻找答案,真的不知道如何解决它。 那么让我们来谈谈业务: 有一个图像和一个TextView ,我需要像这样在ImageView周围流动TextView : 第一个可能的解决方案是使用https://github.com/deano2390/FlowTextView,但它不扩展TextView所以这个库不适合我的原因很多。 第二种解决方案是使用LeadingMarginSpan.LeadingMarginSpan2跨度,但是它会影响文本中每个n行的每个段落(就像在这个答案 – > 如何排列文本以在图像周围流动一样 ),所以我得到这样的结果: 但是我只想为前n行设置保证金! 然后我决定实现LeadingMarginSpan.Standart并创建一个计数器,并在getLeadingMargin(first: Boolean): Int增加它getLeadingMargin(first: Boolean): Int函数的调用。 当计数器达到期望值时,函数返回0作为余量宽度。 又有一个失败! 而不是填充TextView线,文本只是左移,并没有传播到视图的末尾! UPD:是的,我在这里使用onGlobalLayoutListener 那么,谷歌搜索另一个解决方案,我发现这个答案https://stackoverflow.com/a/27064368/7218592好吧,我已经做了一切描述和实施的代码: //set left margin of desirable width val params: RelativeLayout.LayoutParams = RelativeLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) params.leftMargin = holder.imageContainerHeight!! params.addRule(RelativeLayout.BELOW, holder.mNumberAndTimeInfo!!.id) holder.mCommentTextView!!.layoutParams = params if (holder.commentTextViewOnGlobalLayoutListener != null) holder.mCommentTextView!!.viewTreeObserver.removeOnGlobalLayoutListener( holder.commentTextViewOnGlobalLayoutListener) //add onGlobalLayoutListener holder.mCommentTextView!!.viewTreeObserver.addOnGlobalLayoutListener( if (holder.commentTextViewOnGlobalLayoutListener != […]

不能生成视图绑定器java.lang.NullPointerException

突然,我得到这个错误,同时重建我的项目。 任何人都有这方面的经验? 在我的项目中,我使用Kotlin 1.1.51和Data Binding Error:error: cannot generate view binders java.lang.NullPointerException Error:java.lang.RuntimeException: failure, see logs for details. Error:org.gradle.api.GradleException: Internal compiler error. See log for more details 谁低估了我的问题,请看下面的图片。 这是Android Studio构建错误,而不是由我的错误代码引起的异常 这是Gradle控制台消息: e: error: cannot generate view binders java.lang.NullPointerException e: e: at android.databinding.tool.store.SetterStore.getMatchingMultiAttributeSetters(SetterStore.java:642) e: at android.databinding.tool.store.SetterStore.getMultiAttributeSetterCalls(SetterStore.java:529) e: at android.databinding.tool.BindingTarget.resolveMultiSetters(BindingTarget.java:226) e: at android.databinding.tool.LayoutBinder.<init>(LayoutBinder.java:249) e: at android.databinding.tool.DataBinder.<init>(DataBinder.java:52) e: at […]

与Gradle不兼容的ClassChangeError

我知道这个问题已经解决了,但我相信我的情况是不同的。 我在intellij中使用gradle来运行我的程序,并试图启动我的本地主机服务器时出现此错误: Dec 12, 2016 2:28:38 PM com.sun.jersey.api.core.ClasspathResourceConfig init INFO: Scanning for root resource and provider classes in the paths: C:\Program Files\Java\jdk1.8.0_101\jre\lib\charsets.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\deploy.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\access-bridge-64.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\cldrdata.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\dnsns.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jaccess.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jfxrt.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\localedata.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\nashorn.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunec.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunjce_provider.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunmscapi.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunpkcs11.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\zipfs.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\javaws.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\jce.jar C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfr.jar C:\Program […]