繁体   English   中英

重新安装应用程序后,为什么数据没有被删除。 在模拟器上?

[英]Why is data not being wiped after I reinstalled app. on emulator?

我写了一些测试代码来学习如何使用SharedPreferences。 该应用程序可以很好地保存数据,但是当我在eclipse上按“run”再次运行应用程序时,控制台窗口说它正在上传,安装和启动应用程序。 由于它说再次安装,我希望删除存储在SharedPreferences中的数据。 但是,当我进入活动时,旧数据仍然显示。

我的程序运行如下:

  1. 闪屏
  2. 列出具有3个活动选项的菜单活动
  3. 我实现保存功能的目标活动

这是我的特定活动的代码:

public class StartingPoint extends Activity {
/** Called when the activity is first created. */

int counter;
Button add;
Button sub;
TextView display;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    counter=0;

    add= (Button) findViewById(R.id.bAdd);
    sub= (Button) findViewById(R.id.bSub);
    display= (TextView) findViewById(R.id.tvDisplay);

    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            counter++;
            display.setText(""+counter);
            display.setTextSize(counter);
        }
    });
    sub.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            counter--;
            display.setText(""+counter);
            display.setTextSize(counter);
        }
    });

}

@Override
protected void onStart() {
    // TODO Auto-generated method stub
    super.onStart();

    SharedPreferences prefs = getPreferences(0); 
    int getfromfile = prefs.getInt("counter_store", 1);
    counter=getfromfile;
    display.setText(""+getfromfile);
    display.setTextSize(getfromfile);
}

@Override
protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();

     SharedPreferences.Editor editor = getPreferences(0).edit();
     editor.putInt("counter_store", counter);
     editor.commit();
}
}

由于它说再次安装,我希望删除存储在SharedPreferences中的数据

从Eclipse重新运行应用程序类似于在生产中对应用程序进行升级。 与应用程序关联的所有数据都保持不变。

您可以通过“设置”应用程序及其“应用程序”屏幕,以与在手机上使用相同的方式清除模拟器中的旧数据。

这就是它的工作原理。 它安装在以前的安装上。 如果要删除所有数据,可以先卸载,也可以从“管理应用程序”中清除数据。

我想因为在每次对代码进行微小更改并重新运行应用程序时擦除使用共享首选项的应用程序中的某些功能是不可能的。 如果要清除数据,请参阅CommonsWare答案。

擦除应用数据的最简单/最干净的解决方法是使用adb卸载它。 你会在你的sdk中找到adb -e选项用于模拟器。 使用-d作为设备。

您可以运行的命令是:

>adb -e uninstall <app_package_name>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM