Bagaimana untuk menjalankan JavaScript latar belakang dalam Phonegap pada iPhone - untuk pemasa/penghitung masa?


Skrip pemasa saya berjalan dengan lancar di latar belakang pada Android (mengira masa), tetapi iOS 4.3.2 nampaknya memberhentikan skrip tersebut. Pada iOS, pemasa berhenti pada masa apabila aplikasi dihantar ke latar belakang.

Saya memerlukan jam randik yang berjalan (masa dipaparkan dikemas kini setiap saat dalam paparan) dan beberapa mesej penggera pada titik masa yang ditetapkan.

Kod untuk jam randik adalah seperti berikut:

        this.timer = window.setInterval(function(){
            instance.runtime += Stopwatch.INCREMENT;
            instance.doDisplay();
        }, Stopwatch.INCREMENT);

Saya menyedari tentang penyelesaian asli, tetapi ingin kekal dengan penyelesaian JavaScript demi keserasian merentas platform.

Jawapan #1

Memandangkan setIntervals tidak berfungsi di latar belakang, saya akan menggunakan setTimeout rekursif sebaliknya.
Ini bermakna anda tidak boleh menjejaki masa dengan +=, jadi anda perlu menggunakan (new Date).getTime(); atau Date.now() sebaliknya.

this.timer = function myTimer () {
  instance.currentTime = (new Date).getTime();
  instance.doDisplay();
  setTimeout( myTimer, Stopwatch.INCREMENT ); 
}

Jika setTimeout tidak kembali hidup apabila aplikasi kembali, sepatutnya lebih mudah untuk memulakan semula.