Есть несколько способов достичь желаемого.
1.) Расширьте класс приложения и создайте там экземпляр вашего контроллера и модели.
public class FavoriteColorsApplication extends Application {
private static FavoriteColorsApplication application;
private FavoriteColorsService service;
public FavoriteColorsApplication getInstance() {
return application;
}
@Override
public void onCreate() {
super.onCreate();
application = this;
application.initialize();
}
private void initialize() {
service = new FavoriteColorsService();
}
public FavoriteColorsService getService() {
return service;
}
}
Затем вы можете в любое время вызвать свой синглтон из пользовательского объекта Application:
public class FavoriteColorsActivity extends Activity {
private FavoriteColorsService service = null;
private ArrayAdapter<String> adapter;
private List<String> favoriteColors = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_favorite_colors);
service = ((FavoriteColorsApplication) getApplication()).getService();
favoriteColors = service.findAllColors();
ListView lv = (ListView) findViewById(R.id.favoriteColorsListView);
adapter = new ArrayAdapter<String>(this, R.layout.favorite_colors_list_item,
favoriteColors);
lv.setAdapter(adapter);
}
2.) Вы можете настроить свой контроллер просто на создание отдельного экземпляра самого себя:
public class Controller {
private static final String TAG = "Controller";
private static sController sController;
private Dao mDao;
private Controller() {
mDao = new Dao();
}
public static Controller create() {
if (sController == null) {
sController = new Controller();
}
return sController;
}
}
Затем вы можете просто вызвать метод create из любого действия или фрагмента, и он создаст новый контроллер, если он еще не существует, в противном случае он вернет ранее существовавший контроллер.
3.) Наконец, в Square создана изящная структура, которая обеспечивает внедрение зависимостей в Android. Называется Кинжал . Я не буду вдаваться в подробности, как использовать его здесь, но это очень удобно, если вам нужны такие вещи.
Надеюсь, я достаточно подробно рассказал о том, как вы можете делать то, на что надеетесь.