Я пишу в файл, используя android-ndk. Таким образом, запись в файл происходит с использованием собственного кода C.
Он содержит какие-то показания, которые я ввожу с помощью ndk. По нажатию кнопки начинается запись в файл. И одновременно я хочу прочитать содержимое файла и использовать его в другом потоке для отображения значений, поскольку операция записи может продолжаться в течение 15 секунд, и пользователю придется ждать столько времени, чтобы увидеть результат, поэтому я хочу показать результат один один, как только я получу его в этот файл.
Возможно ли это, если да, можете показать мне, как это сделать?
Ну, я начал с этого, и прямо сейчас, как я это делаю,
Thread thr1 = new Thread(r1);
Thread thr2 = new Thread(r2);
thr1.start();
thr2.start();
r1 = new Runnable() {
public void run() {
File sdcard= Environment.getExternalStorageDirectory();
nativeFunction(sdcard +"/readings.txt");
//takingReading=false;
readingFile = new File(sdcard +"/readings.txt");
Log.i("length of file", ""+readingFile.length());
}
};
r2 = new Runnable() {
public void run() {
try {
Thread.sleep(3000);
File sdcard= Environment.getExternalStorageDirectory();
readingFile = new File(sdcard +"/readings.txt");
Log.i("length of file", ""+readingFile.length());
} catch (InterruptedException iex) {}
}
};
Родная функция открывается
file= fopen(location,"w+");
Эта функция продолжает записывать данные в файл около 2 минут, но мне нужно постоянно получать значения, введенные собственной функцией, поэтому я начал второй поток, но когда я проверяю file.length(), он всегда равен 0.
и когда запись встроенной функции завершена, приходит фактический размер файла. Так как же обойти эту проблему?