2010-11-27 3 views
3

Ich versuche derzeit zu beurteilen, ob ein Projekt für Android realisiert werden kann. Ein großes Problem ist, dass wir, da es sich um einen P2P-Client handelt, eine beträchtliche Anzahl von Verbindungen offen halten müssen, wenn wir sie ausführen. Jetzt übertragen die Verbindungen keine großen Datenmengen mehr, sondern eher ein Nachrichtensystem. Wenn wir also für jede Verbindung einen Thread haben, entsteht ein unnötiger Overhead, wenn wir ab und zu eine einzelne Nachricht von 64 Bytes lesen.Nicht blockierende IO für Android

Also fragte ich mich, ob es Unterstützung für nicht blockierende IO wie select() oder poll() unter Linux gibt.

Irgendwelche Vorschläge?

Antwort

5
+0

Das sieht perfekt für mich. Vielen Dank :-D – cdecker

+0

Die erste Verbindung deckt nicht nicht blockierende E/A tatsächlich ab. Die Verbindung zum nio-Paket könnte jedoch nützlich sein. –

1

Natürlich. Sobald Ihre Anwendung erklärt Internet-Erlaubnis verwendet, können Sie alle normalen Linux-Netzwerk-Dinge normalerweise verfügbar für einen Nicht-Root-Benutzer in C mit dem NDK, und alle von ihnen von Java, dass jemand (möglicherweise Sie, wenn niemand Sie auch es) hat kümmerte sich um Unterstützung zu schreiben.

Nun, eine Ausnahme: Ihr Mobilfunkanbieter wird wahrscheinlich keine eingehenden Verbindungen zulassen, und auch die meisten WLAN-Router werden nicht funktionieren, es sei denn, Sie haben sie speziell eingerichtet. Aber das sind Infrastrukturprobleme und keine Probleme mit Android selbst.

Sie müssen wahrscheinlich auch eine Kombination aus einer Aktivität erstellen, um die Vordergrundbenutzeroberfläche und einen Dienst bereitzustellen, um die tatsächlichen Übertragungen im Hintergrund mit nur einem Statusleistensymbol fortzusetzen.

Verwandte Themen