我有以下代码来设置单例数据,在我的 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;
}}