ActivityLifecycleCallbackを使用
ApplicationクラスでActivityLifecycleCallbackを受けて、onStopとonPauseでカウントする方法です。
最も一般的方法。
ActivityManager#getRunningAppProcessを使用
Lollipop以降は自アプリとホームアプリの情報しか取得出来なくなりましたが、何かの理由でホームアプリの状態を知りたい場合に有効です。
具体的にはRunningAppProcessInfo#importanceの値をチェックします。
値がIMPORTANCE_FOREGROUNDだった場合がフォアグランドにいる場合となりますが、注意しなければいけないのが、フォアグランドの他アプリからServiceがbindされている場合もIMPORTANCE_FOREGROUNDになるため(OSから見れば同レベルに重要って事かな?)、importanceReasonCodeのチェックも必要です。
UsageStatsManagerを使用
全てのアプリの状態を知りたい場合、Lollipop以降はこれを使用する必要がandroid.permission.PACKAGE_USAGE_STATSをuses宣言する必要があるかつ、ユーザ操作でセキュリティ設定(使用履歴にアクセスするアプリ)を有効にして貰う必要があり、とても使い勝手が悪いです。
----------
最後に確認したOSバージョンはAndroid 6.0です
AndroidはGoogle Inc.の商標または登録商標です
0 件のコメント:
コメントを投稿