У меня есть метод сохранения, который выполняется во время onPause()
:
String save = numberValue.getText().toString();
FileInputStream fos;
try {
fos = openFileOutput(FILENAME,Context.MODE_PRIVATE);
fos.write(save.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
Toast.makeText(getBaseContext(), "Save has run", Toast.LENGTH_SHORT).show();
}
и я пытаюсь прочитать этот файл, позвонив
new Loader().execute(FILENAME);
и мой класс Loader выглядит так:
public class Loader extends AsyncTask<String, Integer, String> {
protected void onPostExecute(String result) {
textview.setText(result);
}
@Override
protected String doInBackground(String... params) {
FileInputStream fis;
String loaded = null;
try {
fis = openFileInput(FILENAME);
byte[] dataArray = new byte[fis.available()];
while (fis.read(dataArray) != -1) {
loaded = new String(dataArray);
}
fis.close();
textview.setText(loaded);
return loaded;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return loaded;
}
}
И я понятия не имею, почему текстовое представление не устанавливается в качестве байтов от FILENAME. Идея состоит в том, что текстовое представление увеличивается, и это число сохраняется при закрытии действия и восстанавливается в текстовое представление при повторном запуске действия.
Он запускается, я знаю, потому что через несколько минут Watch Dog сообщает мне, что фоновая служба из этого приложения потребляет около 50% процессорного времени. Я проверил / data / data // files и файл, в который я пишу, там с правильным значением.