私はアプリケーションの実行中のサービスを持っています。ユーザーがアプリケーションに戻ると、serviseが実行されているかどうかを確認し、それが真実なら、私はこのサービスに接続し、断片的なデータを表示しようとします。しかし、時には、私はこの間違いを得る:接続が行われた場合にservise致命的な例外:java.lang.IllegalStateException:アクティビティが破棄されました
private void connectService() {
registerFitnessReceiver();
sConn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
if (service != null) {
callGPSFragment(status, mapWaySelections, activityType);
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
Intent requestIntent = new Intent(MainActivity.this, FitnessRecordingService.class);
requestIntent.setAction(FitnessRecordingService.GET_FITNESS_RECORD_ACTION);
bindService(requestIntent, sConn, 0);
}
に接続するための
Fatal Exception: java.lang.IllegalStateException: Activity has been destroyed
at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1433)
at android.app.BackStackRecord.commitInternal(BackStackRecord.java:687)
at android.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:667)
at com.fjuul.fjuul.MainActivity.showGPSFragment(MainActivity.java:712)
試み - フラグメントを作成し、データに
private void callGPSFragment() {
...
GPSServicePresenter gpsServicePresenter = new GPSServicePresenter();
showGPSFragment(gpsServicePresenter);
コールフラグメント
public void showGPSFragment(GPSServicePresenter gpsServicePresenter) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.body_fragent, gpsServicePresenter);
Fragment oldFragment = fragmentManager.findFragmentByTag(SplashFragment.tag());
if (oldFragment != null) {
transaction.remove(oldFragment);
}
transaction.commitAllowingStateLoss();
}
を埋めます
行番号「712」はどちらですか? –
@ρяσѕρєяK例外に基づいて、私はそれが最後のものだと推測しています: 'transaction.commitAllowingStateLoss();' – REG1
はい。 commitAllowingStateLoss()の後に例外が表示される – Devnock