如何删除单例数据?



我有以下代码来设置单例数据,在我的 Application.It 保存数据没有问题。现在我需要刷新数据并每次设置一个新数据。我尝试添加将数据设置为 null 的clearInstance()方法。然后在保存之前调用该方法,就像singleToneClass.clearInstance()然后调用singleToneClass.setData(mydata);但它不会删除总是显示第一个保存的数据。如何删除和刷新数据

public class singleToneClass {
String s;
private static final singleToneClass ourInstance = new singleToneClass();
public static singleToneClass getInstance() {
return ourInstance;
}
private singleToneClass() {
}
public void setData(String s) {
this.s = s;
}
public String getData() {
return s;
}
public void clearInstance() {
this.s=null;
s=null;
}

这就是我尝试使用它的方式

singleToneClass singleToneClass = com.techware.myapo.singleToneClass.getInstance();
singleToneClass.clearInstance();
singleToneClass.setData(mydata);

您正在使用反模式单例

public class SingleToneClass{
private static SingleToneClass singleToneClass;
private String s;
public static SingleToneClass getInstance(){
if (singleToneClass == null) {
singleToneClass = new SingleToneClass();
}
return singleToneClass;
}
public String getS() {
return s;
}
/**
*
* @param s can be null and no need to clearData method
*/
public void setS(String s) {
this.s = s;
}
public void clearData() {
this.s = null;
}
public void printData() {
System.out.print(this.s + "");
}
}

工作解决方案,

public class MainActivity extends AppCompatActivity {
SingleToneClass singleToneClass;
int countData=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
singleToneClass = SingleToneClass.getInstance();
}
public void setData(View view) {
countData++;
singleToneClass.clearInstance();
singleToneClass.setData("Hello "+countData);
}
public void getData(View view) {
Toast.makeText(this, singleToneClass.getData(), Toast.LENGTH_SHORT).show();
}

}

activity_main.xml

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="setData"
android:text="Set" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="getData"
android:text="Get" />

单音类.java

public class SingleToneClass {
String s;
private static final SingleToneClass ourInstance = new SingleToneClass();
public static SingleToneClass getInstance() {
return ourInstance;
}
private SingleToneClass() {
}
public void setData(String s) {
this.s = s;
}
public String getData() {
return s;
}
public void clearInstance() {
this.s=null;        s=null;
}}

最新更新