トップページ > 記事閲覧
Android版:非アクティブ時などの検出
名前:ギウ 日時: 2017/03/17 19:04

お世話になっております。 ゲーム(アプリ)が終了する前に、ゲームデータを保存したいのですが、 例えば、非アクティブになった時や、アプリ終了のタイミングで関数をコールバックする等は可能でしょうか。
メンテ

Page: 1 |

Re: Android版:非アクティブ時などの検出 ( No.1 )
名前:ギウ 日時:2017/03/18 14:23

(一応、補足しておきます) 私の環境では、アプリをスマホで終了させた時、ProcessMessageから-1等は戻ってきませんでした。
メンテ
Re: Android版:非アクティブ時などの検出 ( No.2 )
名前:管理人 日時:2017/03/20 00:59

アプリが非アクティブになったりアクティブになったりするタイミングで呼ばれるコールバック関数を 登録するための関数を追加しましたので、よろしければダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibAndroidTest.exe // Android版 以下の関数を追加しました // アプリが非アクティブになった際に呼ばれるコールバック関数を登録する int SetAndroidLostFocusCallbackCallbackFunction( void (* Callback )( void *Data ), void *CallbackData ) ; // アプリがアクティブになった際に呼ばれるコールバック関数を登録する int SetAndroidGainedFocusCallbackCallbackFunction( void (* Callback )( void *Data ), void *CallbackData ) ; よろしければお使いください > 例えば、非アクティブになった時や、アプリ終了のタイミングで関数をコールバックする等は可能でしょうか。 非アクティブになったタイミングでコールバックすることは可能ですが、 アプリ終了のタイミングはアプリ側では検出できないので不可能です ( Android のタスクマネージャからアプリを終了する行為は、Windowsでいうところのタスクマネージャからの  ソフトの強制終了に等しいようで、アプリ側にはアプリ終了のお知らせなど一切されずに、  バツッと実行を終了させられてしまいます )
メンテ
Re: Android版:非アクティブ時などの検出 ( No.3 )
名前:ギウ(解決) 日時:2017/03/20 08:48

お疲れ様です! ご対応有難うございます! 問題なく、非アクティブ時にコールバックされるのを確認しました。 > バツッと実行を終了させられてしまいます 了解しました。 ご確認有難うございます。
メンテ
Re: Android版:非アクティブ時などの検出 ( No.4 )
名前:Dixq 日時:2017/03/25 21:15

正式な方法では検出不可能ですが、 無理やりな方法で良ければアプリの終了を他から検出させる方法はあります。 アプリに紐づいたサービスを起動させておきAIDLでbindしておきます。 サービスは紐づいたアプリが無くなるとonDestroyが呼ばれます。 ここで、正常終了した時はアプリ側からのunbindがコールされて、その後onDestroyが呼ばれます。 強制終了させられた場合(LowMemoryKillerによる終了含む)はunbindがスキップされて突然onDestroyが呼ばれます。 よって強制終了によって殺されたかどうかはこれで判別することが出来ます。 正式なAPIによるものではないので試行錯誤の故の方法ではありますが、 私が確認した数十の端末の中では全てうまく機能しています。
メンテ
Re: Android版:非アクティブ時などの検出 ( No.5 )
名前:管理人(解決) 日時:2017/03/26 15:31

ご情報ありがとうございます まだ Android初心者なので、高度な裏技はもう少し慣れてから挑戦しようと思います (・・;;
メンテ

Page: 1 |

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

   クッキー保存