カスタムのキャッチされていない例外ハンドラー (UEH) で Flurry の onEvent メソッドを使用しようとしていますが、イベントが表示されません。例外ハンドラーに到達するまでに、Flurry セッションが終了したためではないかと考えています。 .
すべてのアクティビティの onStart() メソッドで FlurryAgent.onStartSession を呼び出し、すべてのアクティビティの onStop() メソッドで FlurryAgent.onEndSession() を呼び出します。
最初のアクティビティで UEH を設定しています。
Thread.setDefaultUncaughtExceptionHandler(new TopExceptionHandler(this));
私のUEH(簡略化)は次のようになります。
public class TopExceptionHandler implements UncaughtExceptionHandler {
private Thread.UncaughtExceptionHandler defaultUEH;
private Activity app = null;
public int numberOfStories = -1;
public TopExceptionHandler(Activity app) {
this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
this.app = app;
}
@Override
public void uncaughtException(Thread t, Throwable e) {
Map<String, String> params = new HashMap<String, String>();
ExceptionHandlerValues values = ExceptionHandlerValues.getExceptionHandlerValues();
params.put("model", values.model);
params.put("androidVersion", values.androidVersion);
params.put("androidSDK", values.androidSDK);
params.put("wattpadVersion", values.wattpadVersion);
params.put("misc", "StoryCount=" + values.storyCount + ";");
params.put("class", e.getClass().toString());
// Send it off to Flurry as an event
FlurryAgent.onEvent(ExceptionHandlerValues.EVENT_ID, params);
defaultUEH.uncaughtException(t, e);
}
}
慌ただしいセッションが終了した場合 (終了したと思います)、UEH で新しいセッションを開始するにはどうすればよいですか? 他の人がこのソリューションの実装に成功したと言っているのを見たことがあるので、それが可能であることは知っていますが、私はそれを理解できないようです.
ありがとう!