【发布时间】:2013-01-18 19:30:41
【问题描述】:
我正在编写代码以使用单例对象创建应用程序。 什么时候上线,
问题出在我启动应用程序时。它将创建一个对象,当我按下后退按钮时,应用程序将关闭。当我长按主页按钮并再次启动应用程序时,它将创建另一个对象。
当我再次通过单击图标启动应用程序时,它将生成另一个对象。
但是当我通过按主页按钮从应用程序中退出并再次通过长按主页按钮并启动应用程序进入应用程序时,它不会创建新对象。
活动代码:
package com.gmmusic.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class GmmusicActivity extends Activity
{
/** Called when the activity is first created. */
private static String TAG = "GmmusicActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(TAG, "Created instance#"+ MyMainApplication.getInstance().count());
}
}
单例代码:
package com.gmmusic.test;
import android.app.Application;
import android.util.Log;
public class MyMainApplication extends Application {
private static String TAG = "MyMainApplication";
private static MyMainApplication singleton;
public static MyMainApplication getInstance() {
return singleton;
}
private int count = 0;
private int count1=0;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
singleton = this;
Log.i(TAG, "Singleton created");
System.out.println("count1 >> "+count1);
count1++;
}
public int count() {
return count++;
}
}
【问题讨论】:
-
您的问题到底是什么?当应用程序不再在内存中时,将创建一个新对象,但是当它仍在内存中时,将重用现有的对象。
-
您想保存应用程序上下文并在每次应用程序启动后加载它,对吗?我认为以这种方式保存应用程序实例是不可能的。你根本不需要使用单例。使用 SharedPreferences 保存您的应用程序数据并在每次应用程序启动后加载它。
-
亨利:当应用程序。关闭所有对象不应该被杀死,当再次启动应用程序时。它不会创建新对象,直到我不会按 2 次后退按钮。
-
Skywall:我正在制作一个媒体播放器。当我关闭应用程序时。通过单击后退按钮,它会出来,当我再次启动时,它将创建不会发生的新对象。我该如何解决这个问题。
标签: android android-layout android-intent android-widget