3

Crittercism.init(getApplicationContext(), id);アプリケーション実装の onCreate と MAIN アクティビティの両方を呼び出すのは安全 (または推奨)ですか?

Crittercism セットアップの公式手順では、MAIN アクティビティで呼び出すように指示されており、アプリケーションについてはまったく言及されていません。

これには、Application 実装 (事実上シングルトン) の onCreate メソッドで発生するクラッシュを無視するという副作用があるようです。アプリケーション実装の onCreate で init が呼び出された場合にのみ、例外が報告されます。

では、両方で init を呼び出しても問題ありませんか、それともアプリケーションだけ、またはアクティビティだけでよいのでしょうか?

4

2 に答える 2

3

それとは別に、アクティビティ レベルで Crittercism を初期化すると、独立して実行されている contentproviders でのクラッシュは報告されないか、たとえばパンくずリストを残すために Crittercism を使用すると、次の例外で contentprovider がクラッシュします。

Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at crittercism.android.f$5.<init>(Unknown Source)
at crittercism.android.f.<init>(Unknown Source)
at com.crittercism.app.Crittercism.<clinit>(Unknown Source)

したがって、それらを回避するために、常に Application.onCreate クラスで Crittercism を初期化します。

于 2013-09-18T13:09:58.287 に答える
3

両方の場所で Crittercism ライブラリを初期化しても安全ですが、実際には必要ありません。これは、最初の初期化の後、後続の初期化が検出されて無視されるためです。

これにより、どちらの場所でも初期化するオプションが残ります。ほとんどの人はアクティビティ レベルでそれを行うことを選択しますが、アプリケーション クラスで Crittercism を開始しても機能します。

ライブラリをどこで初期化しても、すべてのアクティビティからクラッシュやその他の情報が報告されるはずです。

于 2013-07-03T20:28:08.670 に答える