タグ付けされた質問 「kotlin」

Kotlinは、JetBrainsに支えられた、静的に型付けされたオープンソースのプログラミング言語です。KotlinはOOPと機能の機能を組み合わせ、相互運用性、安全性、明確性、およびツールのサポートに重点を置いています。現在、JVMとJavaScriptを対象としており、Androidで公式にサポートされている言語です。

1
Kotlinによって生成された不要なnullチェックをカバーする方法
次の最小限のKotlinの例を検討してください。 fun <U> someWrapper(supplier: () -> U): () -> (U) { return { supplier() } } fun foo(taskExecutor: TaskExecutor): Int { val future = CompletableFuture.supplyAsync(someWrapper { 42 }, taskExecutor::execute) return future.join() } @Test public void shouldFoo() { assertThat(foo(), is(42)); } Jacocoにはブランチカバレッジルールがありますが、上記のコードでは失敗し、2つのブランチのうちの1つはsomeWrapper呼び出しの行でカバーされていません。残念ながら、それsomeWrapperが呼び出されるすべてのクラスを除外することは私にとってオプションではありません。 逆コンパイルされたJavaコードを見る: public final int foo(TaskExecutor taskExecutor) { Object var10000 …

1
Gradleの同期に失敗しました:サポートされていないメソッド:KotlinPlatformContainer.supports()
Android Studioを最新バージョン3.5.1にアップデートしたところ、次のエラーが発生することがわかりました。 Gradleの同期に失敗しました:サポートされていないメソッド:KotlinPlatformContainer.supports()。接続するGradleのバージョンは、その方法をサポートしていません。この問題を解決するには、接続するGradleのターゲットバージョンを変更またはアップグレードします。または、この例外を無視して、モデルから他の情報を読み取ることもできます。 2つのモジュールでKotlin Multiplatformを使用していますが、それが関連しているかどうかはわかりません。

1
EntityフィールドとしてKotlinインラインクラスを使用した会議室データベース
私はRoom(https://developer.android.com/topic/libraries/architecture/room)を、Jake Whartonsの記事Inline Classes Make Great Database IDsに記載されているKotlinのインラインクラスと連携させようとしています: @Entity data class MyEntity( @PrimaryKey val id: ID, val title: String ) inline class ID(val value: String) このルームをコンパイルすると、 エンティティとPojoには、使用可能なパブリックコンストラクターが必要です。空のコンストラクターを持つことも、パラメーターが(名前とタイプによって)フィールドに一致するコンストラクターを持つこともできます。 私が見つけた生成されたJavaコードを調べます: private MyEntity(String id, String title) { this.id = id; this.title = title; } // $FF: synthetic method public MyEntity(String id, String title, DefaultConstructorMarker …

3
Android APIv29 FileNotFoundException EACCES(アクセスが拒否されました)
targetSdkVersion v29用にビルドするときにストレージにアクセスできません。 これが私のgradle設定です: compileSdkVersion 29 buildToolsVersion "29.0.2" ... minSdkVersion 15 targetSdkVersion 29 WRITE_EXTERNAL_STORAGE許可が付与され、のビルド時に同じ設定が正常に機能することに注意してくださいtargetSdkVersion 28。 これが私の実装です: val outputFolder = File(baseFolder + File.separator + "Output Folder") if (!outputFolder.exists()) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Files.createDirectory(outputFolder.toPath()) //This allways returns false with targetSdkVersion 29 } else { if (!outputFolder.mkdirs()) { Log.e("SaveRaw", "Unable to create …

2
コード生成に使用されるANTLRツールバージョン4.7.1が現在のランタイムバージョン4.5.3と一致しない
現在DSLと一部のライブラリを使用しているAndroidアプリで作業していると、突然、ビルドでこのエラーが発生しました。 タスクの生成:app:kaptDebugKotlin FAILED ANTLRツールバージョン4.7.1がコード生成に使用されていますが、現在のランタイムバージョン4.5.3と一致していません例外。 何が悪かったのか: タスク ':app:kaptDebugKotlin'の実行に失敗しました。org.jetbrains.kotlin.gradle.internal.KaptExecution java.lang.reflect.InvocationTargetExceptionの実行中にエラーが発生しました(エラーメッセージなし) 私は探していましたが、成功しませんでした... 問題を確認したい場合は、プロジェクトを複製できます。 Android Studio Canary 4.1を使用したGITHUB Imのプロジェクト。 ありがとう。
8 android  kotlin 

5
警告ダイアログのsetcancelableがfalseの場合、backpressedで機能しない
AlertDialogがありますsetCancelable()が、これは誤りです。でOnbackpressed機能私はAlertDialogを閉じることにしたいです。しかし、setCancelable()がfalseの場合、戻るキーはまったく機能しません。この問題を取り除くにはどうすればよいですか?setCancelable()別の問題が発生するため、true に変更したくありません。 import android.os.Bundle import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { lateinit var dialogBuilder: AlertDialog.Builder override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) dialogBuilder = AlertDialog.Builder(this) dialogBuilder.setMessage("Check your internet connection") .setPositiveButton("OK") { _, _ -> Toast.makeText(this, "OK", Toast.LENGTH_LONG).show() }.setCancelable(false) .create().show() } }

1
Javaアプリケーションを実行しているマルチDockerコンテナーのAWS Elastic Beanstalk環境にメモリを動的に割り当てる方法
無料のエラスティックbeanstalk層から可能な限りのオンスの使用を絞り出したいと思います。 私のバックエンドは、(ktorを使用して)マイクロサービスのセットとして構築されています。正確には5つのマイクロサービスがあります。これらはすべてドッキングされており、マルチDocker イメージ環境で同じ小さなt2.micro(無料)エラスティックBeanstalkインスタンス上ですべて実行しようとしています JavaはJavaなので、最も単純なマイクロサービスでも、Dockerコンテナーごとに約200 MBのRAMをアイドル状態にするのが好きです。 したがって、t2.microは1GBのRAMを提供します。5つのマイクロサービスDockerコンテナーがあり、それぞれに少なくとも200 MBを要求する=本当に近い。 問題は、メモリがほぼ常に100%に激しくホバリングしていることです。 では、どれだけの空きがあり、どれだけ必死に1つのコンテナがメモリを必要としているかに応じて、Dockerコンテナにメモリを動的に割り当てる方法はありますか? 1つのコンテナーが重い負荷をかけている間に、他のコンテナーはほとんどアイドル状態になっているとしたら、RAMを重いタスクを実行しているコンテナーに向け、タスクが終了したら、コンテナーごとの等しいRAM割り当てに戻します。 これを行う方法はありますか?

2
コンパニオンオブジェクトはアプリのライフサイクルの間メモリに残りますか
Kotlinでは、コンパニオンオブジェクトを使用してシングルトンを作成できます。 class MyClass { companion object { fun doSomething() { } } } コトリンのドキュメントによると、それは述べています: コンパニオンオブジェクトのメンバーは他の言語では静的メンバーのように見えますが、実行時にはそれらは実際のオブジェクトのインスタンスメンバーであることに注意してください... https://kotlinlang.org/docs/reference/object-declarations.html これは、コンパニオンオブジェクトで関数を使用した後、クラスのインスタンス(MyClass)がアプリのライフサイクル全体にわたってメモリに残ることを意味しますか?Android Studioでこれが事実かどうかを確認する方法はありますか?
8 android  kotlin 

3
テストクラスをモックしてスパイするときにnullポインタ例外が発生する
Android Studio 3.5.3 Kotlin 1.3 いくつかの簡単なコードをテストしようとしていますが、次の例外が発生し続けます。 IllegalStateException: gsonWrapper.fromJson<Map…ring, String>>() {}.type) must not be null 私はスパイを使用して、戻り値をあざけるので、nullを返します。エラーパスをテストしたいので。 私が私のスタブで何か悪いことをしているかどうかわからない。しかし、この例外を解決できないようです。 ラッパークラスを使用してgson実装をラップし、テストでこれをスパイする public class GsonWrapper implements IGsonWrapper { private Gson gson; public GsonWrapper(Gson gson) { this.gson = gson; } @Override public <T> T fromJson(String json, Type typeOf) { return gson.fromJson(json, typeOf); } } テスト中の私のクラスの実装 class …

2
RX vs Theads vs Executorsのマルチヘッドのパフォーマンス
Kotlinでバックエンドアプリケーションを作成しています。 速度を上げるために、私は現在、サーバーのRxKotlinを使用して、データベース呼び出しやAPI呼び出しなどのIOタスクの並列実行を行っています。コードは通常、次のようになります。 val singleResult1 = Single.fromCallable{ database.get(....) }.io() val singleResult2 = Single.fromCallable{ database.update(....) }.io() Single.zip(singleResult1, singleResult2){ result1: Result1, result2: Result2 -> .... } .flatMap{ //other RX calls } .subscribeOn(Schedulers.io()) .observeOn(Schedulers.computation()) .blockingGet() ただし、実際には複数のイベント(単一のイベント)では機能しないため、Rxは少し乱雑な感じになり、ボイラープレートの束を追加するだけです(null値を返したい場合や、スタックトレースをめちゃくちゃにする可能性がある場合にも複雑になります) ) Executors代わりに、Rxを削除して並列処理に使用(またはスレッド)することを考えています。ここで考慮すべきパフォーマンスの考慮事項はありますか? 私が考えている例: fun <T> waitAll(tasks: List<Callable<T>>, threadCount: Int = -1): List<T> { val threads = if (threadCount …

2
Kotlin Multiplatform Projectユニットテストの問題
今日、私はAndroid Studioを Android Studio 3.5.2 Build #AI-191.8026.42.35.5977832, built on October 31, 2019 JRE: 1.8.0_202-release-1483-b49-5587405 x86_64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o macOS 10.15.1 Android Studioを更新したのは、kotlinのバージョンが1.3.60未満の場合にエラーが表示されるためです。 しかし、ユニットテストファイルの問題に直面しています。以前は問題なく単体テストを実行できました。ここで、関数名(左側)の横にある実行ボタンをクリックすると、ここには何も表示されません。 以下はすべての私の依存関係です // build.gradle buildscript { ext.kotlin_version = '1.3.60' repositories { google() jcenter() maven { url "https://kotlin.bintray.com/kotlinx" } } dependencies { // classpath …

3
CameraXは、Android Studioで必要なサイズまで画像を拡大できないのはなぜですか?
CameraXを学習しています。CameraXBasicはサンプルコードです。 私は、ZoomX関数ベースのCameraFragment.ktを記述します。コードAを見ることができます。関数はいつでも画像を拡大できます。 私は絵のような、SA小さな値と呼び出したとき、私にズームすることができることを見つけるzoomX(2f)、zoomX(3f)が、私のような大きな値を使用するときに画像が再びズームではありませんzoomX(6.0f)、zoomX(7.0f)...なぜ? コードA private lateinit var viewFinder: TextureView private var preview: Preview? = null fun zoomX(orign: Float ){ val x=orign+1 val singleWidth=viewFinder.width/x val singleHeight=viewFinder.height/x val left=viewFinder.width/2f-singleWidth/2f val right=left+singleWidth val top=viewFinder.height/2f-singleHeight/2f val bottom=top+singleHeight val my= Rect(left.toInt(), top.toInt(), right.toInt(), bottom.toInt()) preview?.zoom(my) }

1
Kotlinメソッドの前のプラス記号の意味は何ですか?
私はKotlinを勉強しており、AndroidDevSummit、より具体的にはLeland Richardsonの「Undestanding Compose」のプレゼンテーションを見ていました。 プレゼンテーション中に(28分26秒)、彼は次のコードを示しました。 @Composable fun App(items: List<String>, query: String) { val results = +memo(items, query) { items.filter { it.matches(query) } } // ... } 「メモ」メソッドの前の「+」プラス記号は何ですか?

3
startDateにPeriodを追加してもendDateは生成されません
次のように2つLocalDateのを宣言しています。 val startDate = LocalDate.of(2019, 10, 31) // 2019-10-31 val endDate = LocalDate.of(2019, 9, 30) // 2019-09-30 次に、Period.between関数を使用してそれらの間の期間を計算します。 val period = Period.between(startDate, endDate) // P-1M-1D ここで、期間はその与えられた期待されている月と日の負の量、持っているendDateよりも早いですstartDate。 私はその追加したときにしかしperiodに背中をstartDate、私は取得していた結果ではありませんendDateが、日一日以前: val endDate1 = startDate.plus(period) // 2019-09-29 だから問題は、なぜ不変ではないのですか startDate.plus(Period.between(startDate, endDate)) == endDate これら2つの日付を保持しますか? Period.between間違った期間を返すのは誰か、それともLocalDate.plus間違って追加するのは誰ですか?

3
Kotlinコルーチンを使用したNetworkBoundResource
NetworkBoundResourceとKotlinコルーチンでリポジトリパターンを実装する方法について何かアイデアはありますか?GlobalScopeを使用してコルーチンを起動できることはわかっていますが、コルーチンのリークにつながる可能性があります。viewModelScopeをパラメーターとして渡したいのですが、実装に関しては少しトリッキーです(私のリポジトリはViewModelのCoroutineScopeを知らないためです)。 abstract class NetworkBoundResource<ResultType, RequestType> @MainThread constructor( private val coroutineScope: CoroutineScope ) { private val result = MediatorLiveData<Resource<ResultType>>() init { result.value = Resource.loading(null) @Suppress("LeakingThis") val dbSource = loadFromDb() result.addSource(dbSource) { data -> result.removeSource(dbSource) if (shouldFetch(data)) { fetchFromNetwork(dbSource) } else { result.addSource(dbSource) { newData -> setValue(Resource.success(newData)) } } } } @MainThread …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.