SharedPreferences.getBoolean gibt jedes Mal true zurück

Ich habe eine Klasse für den Umgang mit wichtigen Datenänderungen wie dem App-Kaufstatus und anderen Dingen erstellt.

Zu diesem Zweck habe ich eine Klasse erstellt, die das Setzen und Lesen der Werte übernimmt. Das Problem ist jedoch, dass beim Aufrufen der appIsPurchased () -Methode das Ergebnis wahr ist, obwohl es seit der App-Installation und dem ersten Start nicht geändert wurde.

Das ist mein Code:

/**
 * Created by neemasa on 5/29/14.
 * This class handles more crucial data values within app.
 */
public class AppCore {

    private SharedPreferences settings;
    private String keyPurchase = "app_purchased";
    private Context context;

    public AppCore(Context context){
        this.context = context;
        settings = PreferenceManager.getDefaultSharedPreferences(context);
    }

    public void setAppInPurchasedMode(String status){
        if (status.equals("successful")){
            settings.edit().putBoolean(keyPurchase, true).commit();
        }else if (status.equals("failed")){
            settings.edit().putBoolean(keyPurchase, false).commit();
        }

    }
    public boolean appIsPurchased(){
        boolean purchased = false;
        if (settings.getBoolean(keyPurchase,true)){
            purchased = true;
        }
        return purchased;
    }

}

Frage 1: Stimmt etwas mit meinem Code nicht? Wenn ja, warum gibt appIsPurchased () immer true zurück?
Frage 2: Sind alle Werte in den gemeinsamen Einstellungen standardmäßig wahr?

In der Zwischenzeit, wenn ich diese Klasse in meinem Code benutze, wird der Toast "Purchased!" Läuft auch, wenn die App zum ersten Mal läuft.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AppCore appCore = new AppCore(getApplicationContext());
        if (appCore.appIsPurchased()){
            Toast.makeText(getApplicationContext(),"Purchased!",Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(getApplicationContext(),"Not Purchased!",Toast.LENGTH_SHORT).show();
        }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage