トップページ > 記事閲覧
Androidにてスレッド使って画像読み込みすると表示されない
名前:あっぷる 日時: 2025/05/20 21:56

いつもお世話になっております Androidにてスレッド使って画像読み込みすると表示されない現象があり悩んでおります。 同じコードを使ってWindows上で動かすと問題なく画像が表示されます。 どちらも画像読み込みのハンドルは取れています。 スレッドではなくメイン関数内で画像読み込みするとAndroidでも正しく表示されます。 ここから考えられる原因はございますでしょうか? ロード処理などはできればスレッド内で行いたいのです。 バージョンはVer 3.24aを使用しています よろしくお願いいします。
メンテ

Page: 1 |

Re: Androidにてスレッド使って画像読み込みすると表示されない ( No.1 )
名前:あっぷる 日時:2025/05/21 07:56

ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=3129 こちらを参考に SetUseASyncLoadFlag(TRUE); fhandle = FileRead_fullyLoad(m_PicPath.c_str()); SetUseASyncLoadFlag(FALSE); を使用しても、Windowsでは表示されて、androidでは表示しませんでした どちらのケースでもhandleは取れていました
メンテ
Re: Androidにてスレッド使って画像読み込みすると表示されない ( No.2 )
名前:管理人 日時:2025/05/21 21:49

載せていただいたスレッドでも書いていますが、DXライブラリの各関数はスレッドフリーではありませんので、 基本的に DxLib_Init() を呼んだスレッド以外のスレッドからDXライブラリの関数を呼んだ場合の動作は保証していません なので、Windows上では別スレッドでも問題なく画像が読み込めたというのは私の想定していない状況で たまたま運良く問題なく画像が読み込めているのだと思います なので Android では別スレッドでは正常に読み込めないのは寧ろ仕様の通りとなります m(_ _;m > ロード処理などはできればスレッド内で行いたいのです。 すみません、前述の通りDXライブラリの関数はスレッドフリーではありませんので、 メインスレッド以外のスレッドからの関数呼び出しには対応していません m(_ _;m ロード中に処理をブロックしたくない、等の用途でしたら SetUseASyncLoadFlag という関数を使用することで 非同期読み込みを行えます <関数リファレンス SetUseASyncLoadFlag> https://dxlib.xsrv.jp/function/dxfunc_other.html#R21N1
メンテ
Re: Androidにてスレッド使って画像読み込みすると表示されない ( No.3 )
名前:あっぷる 自己解決 日時:2025/05/22 08:36

ご回答ありがとうございます もろもろ理解できました つまりライブラリの関数は別スレッドから呼ばないように調整する必要があるのですね windowsではたまたま動いたので勘違いしておりました メインスレッドから 非同期設定してファイルを読み込んだあと、 別スレッドにて一定時間毎にメインスレッドにメッセージを送り、 メインスレッドが、メッセージ受け取ったらGetASyncLoadNumで ロードが終わったか調べて次に進むような調整をしたいと思います ありがとうございました! 助かりました
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存