Har börjat intressera mig för minnesoptimering (om än på väldigt basic nivå) och försöker lista ut vilket av följande som är bäst ur både minnessynpunkt och andra aspekter (lätt att koda, effektiv exekvering etc).
Hela frågan går ut på att jag behöver ha tillgång till flertalet "hjälpklasser" från flera Activities. Jag har då två alternativ som jag ser det.
Alternativ 1:
I MainActivity gör jag följande
Kod:
public class MainActivity extends Activity {
public static DatabaseHelper dbHelper;
[USER=4487]OvE[/USER]rride
public void onCreate(Bundle savedInstanceState) {
....
dbHelper = new DatabaseHelper(this);
....
}
}
Därefter nyttjar jag denna i andra klasser, tex:
Kod:
public class AnotherActivity extends Activity {
public void doSomething() {
....
MainActivity.dbHelper.getSomeData();
....
}
}
Alternativ 2:
I MainActivity skapas en private instance
Kod:
public class MainActivity extends Activity {
private DatabaseHelper dbHelper;
[USER=4487]OvE[/USER]rride
public void onCreate(Bundle savedInstanceState) {
dbHelper = new DatabaseHelper(this);
}
}
I andra klasser gör jag likadant
Kod:
public class AnotherActivity extends Activity {
private databaseHelper dbHelper;
public AnotherActivity (Context c) {
dbHelper = new databaseHelper(c);
}
public void doSomething() {
dbHelper.getSomeData();
}
}
Vad är bäst? Mest minneseffektivt? Lättast att jobba med?
EDIT: Om man kör på alternativ 2, vad kan man göra när den activityn avslutas? Kan man explicit döda dbHelper eller ska man bara låta den vara och hoppas på att GC gör jobbet?