1

だから、私はFlurryと統合して、いつ電話するかを考えていますFlurryAgent.onEndSession(this);

アプリには4つのアクティビティがあります。現在、エントリポイント/アクティビティは1つしかないため、追加FlurryAgent.onStartSession(this, Globals.FLURRY_API_KEY);は簡単です。ただし、セッションを停止する際の問題は、4つのアクティビティのいずれかからアプリを閉じることができることです。また、onStop()アプリが画面上のアクティビティを変更するたびに呼び出されます。

Flurryセッションをいつ終了するかを決定する方法についての提案はありますか?別の答えBaseActivityからいくつかのアドバイスを受けて、私はクラスを使用することができ、私の4つの活動のそれぞれがこれを拡張し、それから私はそこに配置onStart()onStop()ました。これにより、Flurry start / stop呼び出しでコードが散らかる問題は解決されますが、いつ停止するかという問題は解決されません。

私の現在の解決策は、上記のアプローチに基づいて構築し、終了フラグを追加することです。基本アクティビティは、終了フラグがtrueに設定されている場合にのみFlurryセッションを終了します。

次に、各アクティビティで、戻るボタンやホームキーなどのキャッチキーの押下を確認します。ホームキーまたは戻るキーが押された場合、exitをtrueに設定します。

これは正しい効果があるはずですが、少しハッキーだと思います。

iOSは、セッションを開始するだけでよいという点で優れています。4つのアクティビティを1つにリファクタリングして、フラグメントを使用することをお勧めします。皆さんはどう思いますか?

4

1 に答える 1

11

アクティビティのすべてのメソッドから、およびすべてのメソッドFlurryAgent.onStartSessionから呼び出す必要があります。ご指摘のとおり、アプリは任意のアクティビティからバックグラウンドで実行できるため、アプリには複数の出口ポイントがあります。ただし、Googleのガイドラインに従っているほとんどのアプリでは、ユーザーがアプリをバックグラウンド処理した後にアプリに戻ると、このアクティビティに戻ります。これは新しいセッションである必要がありますが、単一のエントリポイントからのみ呼び出す場合、FlurrySDKはその時点で新しいセッションを開始しません。A、B、Cの3つのアクティビティがある場合、すべての呼び出しとonStartonEndSessiononStoponStartSessiononStartSessiononEndSessionこのように、ユーザーがAからB、Cに移動すると、SDKは3つの異なるセッションを報告せず、代わりにダッシュボードに報告される単一のセッションに呼び出しを収集します。それが意味をなさない場合はお知らせください。

抽象クラスへのこれらの呼び出しを因数分解するためにを使用するBaseActivityことは良い習慣ですが、Activityの他のサブクラスを使用する場合も同じことを行うようにしてくださいBaseListActivity

(免責事項:私はFlurryでAndroid SDKに取り組んでいます)

于 2013-02-09T15:22:07.847 に答える