Frage

OK: Ich implementiere die Dateifreigabe in einer iPhone -Betriebssystem -App, und dies bedeutet natürlich die Überwachung des Dateisystems. Yay!

Grundsätzlich kopiert und/oder löscht sich das Betriebssystem von und in ein Verzeichnis, auf das ich zugreifen kann, wenn der Benutzer Dateien in den Abschnitt meiner App in iTunes verwandelt. Daher muss ich das Verzeichnis auf Änderungen überwachen, die vermutlich über einen effizienten Mechanismus wie a kqueue().

Wie kann ich das implementieren, damit ich weiß, dass die Dateien das Kopieren beendet haben? Ich dachte nach: nach:

  • Überwachen mit kqueue().
  • Starten Sie bei der Veranstaltung eine Zeitüberschreitung (oder setzen Sie vorhanden).
  • Wenn die Zeitüberschreitung verstrichen, arbeiten Sie.

Aber gibt es eine bessere Möglichkeit, dies zu tun, um sicherzustellen, dass ich nicht über die Zehen des Betriebssystems tritt?

War es hilfreich?

Lösung

Dies ist nur eine teilweise Antwort, könnte aber etwas nützlich sein.

  1. Der Kqueue -Mechanismus funktioniert tatsächlich als Mittel, um benachrichtigt zu werden, wenn das Dokumentenverzeichnis einer App geändert wird.

  2. Die Benachrichtigung erfolgt, sobald das Verzeichnis geändert wird und vor dem Kopieren einer Datei abgeschlossen ist. Ich habe dies beim Testen beobachtet.

Leider gibt es keine Form der Benachrichtigung, wenn die Kopie fertiggestellt wird. Zumindest keine, die ich gefunden habe.

Was ich hoffe, dass Apple erkennen wird, dass es eine Benachrichtigung für "iTunes synchron" geben muss, wird erledigt, da dies ein allgemeines Problem zu geben scheint.

Eine Schleifenprüfung, wenn sich die Änderungszeit der neuen Datei nicht ändert, könnte sich möglicherweise nur meiste Zeit ändern. In einigen extremen Umständen kann iOS innehalten, um alle möglichen zeitaufwändigen Arbeiten im Hintergrund zu erledigen.

Wenn es eine Möglichkeit gibt, zu überprüfen, ob eine bestimmte Datei durch einen anderen Prozess geöffnet ist, würde dies ausreichen.

Geoff

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top