Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nativeコードからの値をStateFlowで受け取ってみた

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for kazaman kazaman
December 22, 2020

 Nativeコードからの値をStateFlowで受け取ってみた

Avatar for kazaman

kazaman

December 22, 2020
Tweet

Other Decks in Programming

Transcript

  1. 自己紹介 kazaman 株式会社ゼネテック : 社会人 1 年目 Android ハマっている! でも歴としては、空いてる期間もあるけど

    1 年くらい 最近業務の方でも行うようになった potatotips 初参加にして初発表なので温かい目で、、、 github: @kazaman97
  2. なんでこの議題なの?? 業務で NDK を使い Native コードを Android 上で動かす必要があった Native 側では、処理が終わるまで常に動作させており、結果を出力し続ける

    その結果を受け取り、画面に表示させなければならない! しかし、 ( 自分が ) やり方を見つけられなかったで自分なりに行ってみた!
  3. サンプルで作成したアプリ 1. EditText にカウントダウンしたい 数値を入れる 2. 「スタート」ボタンを押したら 入力した数値が TextView に表示さ

    れ、 1 秒ずつカウントダウンを開始する 3. 0 もしくは「ストップ」ボタンを押したらカ ウントダウンが終了する カウントダウンアプリ画面 カウントダウン処理を Nativeで行わせる https://github.com/kazaman97/sample-jni-flow
  4. Nativeコード 1 秒ずつカウントダウンする C++ コード 1. start 関数を呼んだら カウントダウン処理を実行する 2.

    カウントダウン処理時中に 現在のタイムを出力し続ける 3. カウント処理が 0 になる、もしくは stop 関 数を呼んだら止まる スタート処理 ストップ処理 カウント ダウン処理 JVM側に値を 渡す処理
  5. Nativeの関数呼び出し `start` 関数を呼び出すと Native 側のコードが呼び出される `onUpdateTime` は Native 側から、 現在のカウントダウン値を渡すときに呼ば

    れる `currentTime` で 今回 UI 側に値渡しする StateFlow Native 実装やり取りをするためのコード Nativeからの値 を受け取る