如何在活动之间传递SQLDatabaseHelper对象?

时间:2018-05-15 19:21:12

标签: java android

我有一个对象SQLDatabaseHelper包含onCreate,onUpgrade和其他方法,但我无法将该对象发送到另一个活动。

1 个答案:

答案 0 :(得分:0)

不要在活动之间传递它。

1.使用Service locator pattern (不推荐)

public class Locator {
    public SQLDatabaseHelper getDbHelper() {

    }
}

2.使用像Dagger这样的依赖注入框架。像这样:

@Component(modules = {DbModule.class})
public interface AppComponent {

    @Component.Builder
    interface Builder {
        @BindsInstance
        Builder application(Application application);

        AppComponent build();
    }

    void inject(MainActivity mainActivity);
}

@Module
public class DbModule {
    @Provides
    @Singleton
    public static SQLDatabaseHelper dbHelper() {
        //create your helper here
    }
}

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Injector.init(this);
    }
}

public class Injector {
    private static AppComponent appComponent;

    public static void init(Application app) {
        appComponent = DaggerAppComponent
                .builder()
                .application(app)
                .build();
    }

    public static AppComponent appComponent() {
        return appComponent;
    }
}

public class MainActivity {
    protected void onCreate() {
        Injector.appComponent().inject(this);
    }
}