使用共享首选项仅在Android首次运行应用程序时调用方法?

时间:2012-08-06 05:51:56

标签: android sharedpreferences

我正在研究android中的壁纸应用程序,我需要将少量图像从资产复制到SDCARD位置以供应用。但是这个过程必须在第一次应用程序运行时完成。当用户将来使用该应用程序时,一定不会发生。 我计划为此目的使用共享首选项。但没有成功。

我已将首选项初始化为类的私有成员。

private SharedPreferences preferences=null;
private boolean flagCopy;
//USING Shared Preferences FOR COPY ASSETS------
        if(preferences!=null){
            flagCopy = preferences.getBoolean("COPY_ASSETS", DO_NOT_COPY_ASSESTS);

        }else{
            preferences =getPreferences(MODE_PRIVATE);
            SharedPreferences.Editor editor = preferences.edit();
            editor.putBoolean("COPY_ASSETS", COPY_ASSESTS); // value to store
            editor.commit();
            flagCopy = true;
        }
        if(flagCopy){//IF FLAG IS FALSE THAN COPY THE IMAGES TO SDCARD FROM RES
            CopyAssets();
        }

1 个答案:

答案 0 :(得分:0)

您的首选项对象始终为null,因此它将始终转到您正在进行flagcopy = true的第二部分。见下面的代码

 preferences =getPreferences(MODE_PRIVATE);
   if(preferences!=null){
            flagCopy = preferences.getBoolean("COPY_ASSETS", COPY_ASSETS);


   if(flagcopy == COPY_ASSETS){
            SharedPreferences.Editor editor = preferences.edit();
            editor.putBoolean("COPY_ASSETS", DO_NOT_COPY_ASSESTS);
            editor.commit();
            flagCopy = true;
        }

        if(flagCopy){
            CopyAssets();
        }