PoC: Don't rebuild the OG on conf change

This commit is contained in:
Bradlee Speice 2014-07-21 22:19:52 -04:00
parent d61f9057b6
commit 7c483695d3
4 changed files with 53 additions and 4 deletions

View File

@ -4,6 +4,7 @@ import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@ -47,8 +48,20 @@ public class DownloadActivity extends BaseActivity implements
*/
private void buildObjGraph() {
if (daObjectGraph == null) {
daObjectGraph = MinimalBible.get(this)
.plus(new DownloadActivityModules(this));
FragmentManager fM = getSupportFragmentManager();
DownloadOGHolder ogHolder = (DownloadOGHolder) fM.findFragmentByTag("OG_HOLDER");
if (ogHolder == null) {
Log.e("DownloadActivity", "Creating new holder...");
ogHolder = new DownloadOGHolder();
daObjectGraph = MinimalBible.get(this)
.plus(new DownloadActivityModules(this));
ogHolder.persistObjectGraph(daObjectGraph);
fM.beginTransaction().add(ogHolder, "OG_HOLDER").commit();
} else {
Log.e("DownloadActivity", "Found existing holder...");
daObjectGraph = ogHolder.fetchObjectGraph();
daObjectGraph.inject(this);
}
}
daObjectGraph.inject(this);
}
@ -62,7 +75,8 @@ public class DownloadActivity extends BaseActivity implements
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
buildObjGraph();
inject(this);
setContentView(R.layout.activity_download);
mNavigationDrawerFragment = (DownloadNavDrawerFragment) getSupportFragmentManager()

View File

@ -37,7 +37,8 @@ import de.devland.esperandro.Esperandro;
DownloadActivity.class,
InstalledManager.class
},
addsTo = MinimalBibleModules.class
addsTo = MinimalBibleModules.class,
library = true
)
public class DownloadActivityModules {
DownloadActivity activity;
@ -102,4 +103,9 @@ public class DownloadActivityModules {
Collection<Installer> provideInstallers() {
return new InstallManager().getInstallers().values();
}
@Provides @Singleton
RefreshManager provideRefreshManager() {
return new RefreshManager(activity);
}
}

View File

@ -1,6 +1,7 @@
package org.bspeice.minimalbible.activity.downloader;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

View File

@ -0,0 +1,28 @@
package org.bspeice.minimalbible.activity.downloader;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import dagger.ObjectGraph;
/**
* Created by bspeice on 7/21/14.
*/
public class DownloadOGHolder extends Fragment {
ObjectGraph holder;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
public void persistObjectGraph(ObjectGraph holder) {
this.holder = holder;
}
public ObjectGraph fetchObjectGraph() {
return this.holder;
}
}