4

まず、特定のアプリケーションに費やされた時間を探していません。など「そのためのアプリ」、com.android.settings/.UsageStats、およびAOSP frameworks/base/services/java/com/android/server/am/UsageStatsService.javaのコードを支援する良い取引、すでに存在しAndroid:アクティビティごとに消費された時間を取得

私がこれまで検討してきたコードは、経過時間が特定の上を費やして記録していないようです<activity>s。私はこの情報を2つの方法で得ることを考えましたが、よりクリーンでシンプルなものが必要であり、既存のコードを活用する必要があると感じています。

  1. 音源タイムスタンプにハックする基本ActivityクラスonPause()onResume()、およびいくつかの場所の情報をログに記録
  2. 音源Contextクラス、ノートを作るために:アイデアはされている(おそらくSQLiteデータベース。)いつでもstartActivity()と友人が呼び出されます。

あなたはどう思いますか?それらのオプションより優れていますか?前もって感謝します!

+0

Googleアナリティクスfor androidは、アクティビティで過ごした平均時間をトラッキングしようとします。あなたはそれを調べましたか? – Shellum

+0

こんにちはチャック、これを持っていただきありがとうございます。それは解決策があまりにも細かいステップですが、私は(アプリ内、アプリ内、アクティビティ内のアプリ内で連続しています) – Jameson

答えて

2

あなたはどう思いますか?それらのオプションより優れていますか?

#2よりも優れていますが、カスタムファームウェアが必要です。

#1は、AFAIKのAPIレベル13のSDK内で唯一のオプションです。

APIレベル14(別称、アンドロイド4.0)を使用すると、上と呼ばれるregisterActivityLifecycleCallbacks()を経由して登録できる、Application.ActivityLifecycleCallbacksに追加あなたのApplication(例えば、getApplicationContext())。私はまだこれを使用していませんが、あなたが希望のログを使っていくつかの共通基盤を拡張することを避けて、1人のリスナーに行き来するアクティビティの通知を手配することができます。

+0

こんにちはCommonsWare、返信いただきありがとうございます!はい、私の意図は、どちらもカス​​タムフレームワークを必要とするということでした。私のユースケースはアプリケーション開発ではありません。可能であれば、アプリケーションコードを変更しないことをお勧めします(もちろん、それは不可能な場合もあります)。 WRT#1アプリ内でActivityを拡張するのではなく、Activity.javaの実装を直接的に野蛮な形で編集することです。 – Jameson

+1

@ジャメオン:ああ、OK。 SOに関する質問をするほとんどの人は、通常のSDK開発を行っています。カスタムファームウェアを作成している場合、オプション1、またはおそらく 'Application.ActivityLifecycleCallbacks'をバックポートしてそれらを使用すれば、おそらくあなたのニーズを満たすでしょう。 #2の危険性は、 'startActivity()'を通らないアクティビティを起動する他のコードパスがあるかどうかわからないことです。 – CommonsWare

+0

+1 wrt startActivity()、これは大きなポイントです。 – Jameson

関連する問題