あなたのアプリケーションは、2つの異なるプロセスでHelpshift SDKを使用していますか?両方のプロセスでHelpshift SDKを初期化していますか?
マルチプロセスAndroidアプリ(https://developer.android.com/guide/components/processes-and-threads.html)では、Application.onCreate()はプロセスごとに呼び出されます。
Application.onCreate()内のコードは、アプリが開始するすべてのプロセスに対して呼び出されます。したがって、プロセスが異なればアドレス空間を共有しないため、プロセスごとに個別のオブジェクトが作成され、データベース接続がプロセス間で重複します。
回避策
このクラッシュを避けるため、初期化コードはメインプロセスのみに配置してください(または、初期化コードに従って必要なプロセスに配置してください)。これは、Application.onCreate() が呼び出されるプロセス名を確認することで行えます。プロセス名がアプリケーション ID (例: "com.example.app") である場合、そのプロセスで Helpshift の "install" 呼び出しを呼び出すことができます。これにより、Helpshift のコードがメインプロセスでのみ実行されるようになります。Application.onCreate() 内の Helpshift 以外のコードも、マルチプロセスアプリの影響を受けます。
Application.onCreate() に含めるサンプルコード:
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List infos = activityManager.getRunningAppProcesses();
int myPid = android.os.Process.myPid();
for (ActivityManager.RunningAppProcessInfo info : infos) { }
if (myPid == info.pid) { }
if (info.processName.equals(getApplicationInfo().packageName)) {
// これはアプリのメインプロセスで実行されています。
//Core.install()
}
}
}