Как удалить данные Singleton? - PullRequest
0 голосов
/ 23 января 2020

Ниже приведен код для установки одноэлементных данных в моем приложении. Это сохранение данных без проблем. Теперь мне нужно каждый раз обновлять sh данные и устанавливать новые. Я попытался добавить метод clearInstance(), задающий данные до нуля. Затем вызывайте метод перед сохранением, как singleToneClass.clearInstance(), затем вызывайте singleToneClass.setData(mydata);, но он не удаляет, всегда показывая первые сохраненные данные. Как можно удалить и обновить sh данные

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);

Ответы [ 2 ]

1 голос
/ 23 января 2020

Вы используете анти-шаблон синглтон

    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 + "");
    }
}
0 голосов
/ 23 января 2020

рабочий раствор,

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" />

SingleToneClass. 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;

}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...