0

我正在使用 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) {}
          }
        };

nativeFunction 打开

file= fopen(location,"w+");

这个函数继续在文件中写东西大约 2 分钟,但我需要不断地获取通过本机函数输入的值,所以我启动了第二个线程,但是当我检查 file.length() 时它始终为 0。

当 nativefunction 写入完成时,就会出现实际的文件大小。那么如何解决这个问题呢?

4

1 回答 1

1

这应该可以使用 pthreads 来实现。因此,您需要生成 2 个线程,一个用于写入,另一个用于读取。如果您从同一个文件中执行此操作,您可能会遇到竞争条件,所以要小心。

有关 pthreads 的更多信息,请谷歌。它被 Linux 世界广泛使用。

于 2012-10-12T11:02:56.373 回答