2011-09-21 72 views
-2

我想在手机关闭时清除共享首选项值?我的应用程序中的后退按钮存在问题

+0

请改善你的问题,把一些努力,其将被关闭。 – Mudassir

+0

重新提出同样的问题被认为是滥用系统;请不要这样做。如果你可以[编辑]澄清你的问题(http://stackoverflow.com/posts/7498418/edit),那么请这样做。一旦你的问题得到了改善(请参阅[faq#howtoask]中的此部分以了解如何),标志着主持人的注意力。选择“其他”,并要求一个国防部重新打开你的问题。 – Will

回答

2

如何清除SharedPreference当设备是switched off

当设备启动时,您可以通过BraodcastReceiver将其清除。

public class PhoneStateReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(final Context context, Intent intent) { 

     if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){ 
      //Clear your `SharedPreference` here. 
     } 
    } 
} 

在您的清单补充一点:

<receiver android:name=".receiver.PhoneStateReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

添加权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
0

Asfar酒店,因为我知道,唯一的可能就是用OnDestroy()但你的程序在运行时,该设备已关闭。

0

同样的问题:Android的:Android: How to make a specific SharedPreference reset itself after the system reboots?

我不知道不同的方式。这个实现非常简单。只需处理BOOT_COMPLETED广播操作并通过调用SharedPreference.Editor上的.clear()(answer is here)来清除首选项。

一个简单的引导接收器可能是这样的:

public class OnBootReceiver extends BroadcastReceiver{ 

       @Override 
       public void onReceive(Context context, Intent intent) { 
         //clear preferences here   
       } 

} 

也声明其在AndroidManifest.xml中为:

  <receiver android:name=".OnBootReceiver"> 
        <intent-filter> 
          <action android:name="android.intent.action.BOOT_COMPLETED" /> 
        </intent-filter> 
      </receiver> 

您还需要为这个权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />