Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Nativeコードからの値をStateFlowで受け取ってみた
Search
kazaman
December 22, 2020
Programming
1.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nativeコードからの値をStateFlowで受け取ってみた
kazaman
December 22, 2020
Other Decks in Programming
See All in Programming
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
660
高専キャリア LT 発表内容
crysta1221
6
5.7k
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
130
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
470
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
320
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
240
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
250
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
110
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
370
Deep dive into the select statement (GopherCon UK)
jespino
0
180
Intent as Code
shoppingjaws
6
940
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
247
13k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
How STYLIGHT went responsive
nonsquared
100
6.3k
Deep Space Network (abreviated)
tonyrice
0
300
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
430
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
720
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
450
Transcript
Nativeコードからの値を StateFlowで受け取ってみた potatotips #72 2020/12/22(Tue) kazaman97
自己紹介 kazaman 株式会社ゼネテック : 社会人 1 年目 Android ハマっている! でも歴としては、空いてる期間もあるけど
1 年くらい 最近業務の方でも行うようになった potatotips 初参加にして初発表なので温かい目で、、、 github: @kazaman97
なんでこの議題なの?? 業務で NDK を使い Native コードを Android 上で動かす必要があった Native 側では、処理が終わるまで常に動作させており、結果を出力し続ける
その結果を受け取り、画面に表示させなければならない! しかし、 ( 自分が ) やり方を見つけられなかったで自分なりに行ってみた!
(Android Dagashi より [ https://androiddagashi.github.io/issue/147-2020-11-22/ ]) なにかいい方法がないかと 探していたら見つけた記事 このStateFlowを 使えばうまいこと
できそう??
StateFlow StateFlow は、状態保持用の監視可能な Flow で、現在の状態や状態更新の情報をコレ クタに出力します。 (https://developer.android.com/kotlin/flow/stateflow-and-sharedflow より引用 ) StateFlowを使えばNativeからの最新値を常に受け取れそう!
StateFlowの使い方 1 2 3 1. 外からは値の変更をできないようにし、 更新された値を流せるようにするため、 privateでMutableStateFlowを定義する 2. 外からは読み取り専用でアクセスできるようにするため、
StateFlowにする 3. 値を発行させる箇所に、 定義したMutableStateFlowのvalueに値を入れる 初期値が必要!
サンプルで作成したアプリ 1. EditText にカウントダウンしたい 数値を入れる 2. 「スタート」ボタンを押したら 入力した数値が TextView に表示さ
れ、 1 秒ずつカウントダウンを開始する 3. 0 もしくは「ストップ」ボタンを押したらカ ウントダウンが終了する カウントダウンアプリ画面 カウントダウン処理を Nativeで行わせる https://github.com/kazaman97/sample-jni-flow
Nativeコード 1 秒ずつカウントダウンする C++ コード 1. start 関数を呼んだら カウントダウン処理を実行する 2.
カウントダウン処理時中に 現在のタイムを出力し続ける 3. カウント処理が 0 になる、もしくは stop 関 数を呼んだら止まる スタート処理 ストップ処理 カウント ダウン処理 JVM側に値を 渡す処理
Nativeの関数呼び出し `start` 関数を呼び出すと Native 側のコードが呼び出される `onUpdateTime` は Native 側から、 現在のカウントダウン値を渡すときに呼ば
れる `currentTime` で 今回 UI 側に値渡しする StateFlow Native 実装やり取りをするためのコード Nativeからの値 を受け取る
①. JNI(Nativeコードとマネージ コードを連携するインターフェース ) を使ってJVM側に 値を渡す 値を渡す ②. MutableStateFlowに値を渡す ③.
値を受け取るときは 使いたい箇所でcollectするだけ!
UI側での処理 コルーチンを作成し、その中で、 collect す る collect して受け取った値を TextView に セットする
1 秒ずつカウントダウンする C++ コード
実際の動作 実際に動かしてみると、 Native で処理したカウントダウン値がしっか り流れてきている!
まとめ StateFlow を使うと Native 側の値を簡単に受け取り UI 反映ができる コルーチンを使っているのでバックグラウンドスレッドで値受け取りもできる 業務の方は、まだ Listener
方式で直していない
ご清聴ありがとうございました♂