Singleton in Android
Ich bin diesem Link gefolgt und habe erfolgreich eine Singleton-Klasse in Android erstellt.http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/
Problem ist, dass ich ein einzelnes Objekt will. Als ob ich Aktivität A und Aktivität B hätte. In Aktivität A greife ich von Singleton aus auf das Objekt zuclass
. Ich benutze das Objekt und habe einige Änderungen daran vorgenommen.
Wenn ich zu Aktivität B gehe und von Singleton Class aus auf das Objekt zugreife, wurde das Objekt initialisiert, und die in Aktivität A vorgenommenen Änderungen werden nicht beibehalten. Gibt es eine andere Möglichkeit, die Änderungen zu speichern? Bitte helfen Sie mir Experten. Das istMainActivity
public class MainActivity extends Activity {
protected MyApplication app;
private OnClickListener btn2=new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent=new Intent(MainActivity.this,NextActivity.class);
startActivity(intent);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get the application instance
app = (MyApplication)getApplication();
// Call a custom application method
app.customAppMethod();
// Call a custom method in MySingleton
Singleton.getInstance().customSingletonMethod();
Singleton.getInstance();
// Read the value of a variable in MySingleton
String singletonVar = Singleton.customVar;
Log.d("Test",singletonVar);
singletonVar="World";
Log.d("Test",singletonVar);
Button btn=(Button)findViewById(R.id.button1);
btn.setOnClickListener(btn2);
}
}
Das istNextActivity
public class NextActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
String singletonVar = Singleton.customVar;
Log.d("Test",singletonVar);
}}
Singleton
Klasse
public class Singleton
{
private static Singleton instance;
public static String customVar="Hello";
public static void initInstance()
{
if (instance == null)
{
// Create the instance
instance = new Singleton();
}
}
public static Singleton getInstance()
{
// Return the instance
return instance;
}
private Singleton()
{
// Constructor hidden because this is a singleton
}
public void customSingletonMethod()
{
// Custom method
}
}
undMyApplication
public class MyApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
// Initialize the singletons so their instances
// are bound to the application process.
initSingletons();
}
protected void initSingletons()
{
// Initialize the instance of MySingleton
Singleton.initInstance();
}
public void customAppMethod()
{
// Custom application method
}
}
Wenn ich diesen Code ausführe, erhalte ich Hallo, in dem ich initialisiert habeSingleton
dann Welt, in der ich es gabMainActivity
und zeigt wieder hallo inNextActivity
in logcat. Ich möchte, dass es die Welt wieder zeigtNextActivity
. Bitte helfen Sie mir, dies zu korrigieren.