Before you judge me, I'd like to say I read theese:
- Saving a List of Strings in Android with SharedPreferences 
- Misbehavior when trying to store a string set using SharedPreferences 
- getString(String key, String defValue) - Reference 
But I still can't understand, can't get things work. I get totally misbehavior of my preferences. My code:
public static SharedPreferences sharedAppPreferences;
public static final String AppsListKey = "AppListKey";
public static final String AppsPreferences = "AppsPreferences";
public static ArrayList<String> packageNames;
public void chooseApps(View view) {
        sharedAppPreferences = getSharedPreferences(AppsPreferences, Context.MODE_PRIVATE);
        if (sharedAppPreferences.contains(AppsListKey)) {
            Set<String> buffer = new LinkedHashSet<String>(sharedAppPreferences.getStringSet(AppsListKey, new LinkedHashSet<String>()));
            packageNames = new ArrayList<String>(buffer);
        } else {
            packageNames = new ArrayList<String>();
        }
        PackageManager packageManager = getPackageManager();
        int flags = PackageManager.GET_META_DATA | PackageManager.GET_SHARED_LIBRARY_FILES | PackageManager.GET_UNINSTALLED_PACKAGES;
        List<ApplicationInfo> packageList = packageManager.getInstalledApplications(flags);
        for (ApplicationInfo pack : packageList) {
            if (((pack.flags & ApplicationInfo.FLAG_SYSTEM) == 1) || packageNames.contains(pack.loadLabel(packageManager).toString())) {
                // System application or already in array
            } else {
                // Installed by user and isnt in array
                packageNames.add(pack.loadLabel(packageManager).toString());
            }
        }
        Editor editor = sharedAppPreferences.edit();
        Set<String> buffer1 = new LinkedHashSet<String> (packageNames);
        editor.putStringSet(AppsListKey, buffer1);
        editor.commit();
        //packageNames.clear();
        //buffer1.clear();
        buffer1 = new LinkedHashSet<String>(sharedAppPreferences.getStringSet(AppsListKey, new LinkedHashSet<String>()));
        packageNames = new ArrayList<String>(buffer1);
        AppList appList = new AppList();
        appList.show(getSupportFragmentManager(), "AppList");
    }
Why first time I run my app I get list like
[Skype, Facebook, Whatsapp, Twitter, Google+]
It's ok as long as app is running... But if I kill my app and restart I get now totally different list like
[Whatsapp, Google+, Skype, Twitter, Facebook]
Could someone explain me please what is here wrong?
 
    