繁体   English   中英

即使应用程序被杀死,如何保存数据

[英]How to save data even when the app is killed

我是应用程序开发的新手。 我刚刚开发了一个简单的应用程序,它在单击按钮时递增和递减计数并在TextView显示结果。 我需要在应用程序被终止时保存计数,直到用户清除它才会丢失该值。 只有一个能帮我!

public class MainActivity extends AppCompatActivity {

    boolean doubleBackToExitPressedOnce = false;

    int count = 0;
    Button inc, dec, clear;
    TextView textView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        inc = (Button) findViewById(R.id.inc);
        dec = (Button) findViewById(R.id.dec);
        clear = (Button) findViewById(R.id.clr);
        textView = (TextView) findViewById(R.id.text);
        inc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                count = count + 1;
                display(count);
            }
        });
        dec.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (count > 0) {
                    count = count - 1;
                    display(count);
                }
            }
        });
        clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                textView.setText(null);
                count = 0;
                textView.setText("0");
            }
        });
    }


    @Override
    public void onBackPressed() {
        if (doubleBackToExitPressedOnce) {
            super.onBackPressed();
            return;
        }
        this.doubleBackToExitPressedOnce = true;
        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                doubleBackToExitPressedOnce = false;
            }
        }, 2000);
    }
    public void display( int number){
            TextView displaycount = (TextView) findViewById(R.id.text);
            displaycount.setText("" + number);
        }
}

您可以通过两种方式在android中保存数据

  1. 共享首选项共享首选项只能存储键值对

  2. SQLite 数据库 SQLite 数据库 它是一个数据库

所以简单的方法是使用这样的共享首选项

public class MainActivity extends AppCompatActivity {
SharedPreferences sharedpreferences;
SharedPreferences.Editor editor;
public static final String mypreference = "mypref";
public static final String CountKey = "CountKey";
boolean doubleBackToExitPressedOnce = false;

int count = 0;
Button inc, dec, clear;
TextView textView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //INIT SHAREPERFERENCES
    sharedpreferences = getSharedPreferences(mypreference,
            Context.MODE_PRIVATE);
    editor = sharedpreferences.edit();
    //ENDING INIT
    inc = (Button) findViewById(R.id.inc);
    dec = (Button) findViewById(R.id.dec);
    clear = (Button) findViewById(R.id.clr);
    textView = (TextView) findViewById(R.id.text);
    //CHECK IF THERE DATA EXIST
    if (sharedpreferences.contains(CountKey)) {
        int i = sharedpreferences.getInt(CountKey, 0);
        display(i);
    }
    //END CHECKING
    inc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            count = count + 1;
            display(count);
        }
    });
    dec.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (count > 0) {
                count = count - 1;
                display(count);
            }
        }
    });
    clear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        //START Saveing Data
    editor.putInt(CountKey, number);
    editor.commit();
    //END SAVING
            count = 0;
            textView.setText("0");
        }
    });
}


@Override
public void onBackPressed() {
    
    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
        return;
    }
    this.doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            doubleBackToExitPressedOnce = false;
        }
    }, 2000);
}
public void display( int number){
        //START Saveing Data
    editor.putInt(CountKey, number);
    editor.commit();
    //END SAVING
        TextView displaycount = (TextView) findViewById(R.id.text);
        displaycount.setText("" + number);
    }
}

如果我的回答对你有帮助,请点赞

暂无
暂无

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

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