これは大まかなものです(私は現在主にc#でコーディングしており、質問には関係がないため)semi psuedo-主要なポイント(スレッド)にsunドキュメントスニペットを含むコード
Threadを拡張する非同期POSTメソッドで必要な変数にアクセスできるクラスを作成します。
class WorkerThread extends Thread {
int someDataYouNeed;
MyHttpFileUploader maybeAClassYouNeedToCommunicateWithAtEnd;
boolean hasNotFinishedTask = true;
WorkerThread(int someDataYouNeed, MyHttpFileUploader callBackClass) {
this.someDataYouNeed = someDataYouNeed;
this.maybeAClassYouNeedToCommunicateWithAtEnd = callBackClass;
}
public void run() {
while(hasNotFinishedTask){
//do your work in here
//Try contact network endpoint
try{
//do a network call and if it doesnt except
hasNotFinishedWork = false
//now callback to the class firing a method maybe (I just made one up)
maybeAClassYouNeedToCommunicateWithAtEnd.Close();
}catch(TheException ex){ //do nothing or log }
if(hasNotFinishedTask){
Thread.Sleep(60000);//retry every minute
}
}
}
}
//非同期タスクが失敗したときにスレッドをインスタンス化します...。
WorkerThread worker = new WorkerThread(42, this);
worker.start();
さて、私が言ったように、アプリケーションはスマートフォンで実行されており、シャットダウンできると思います...その場合、OSで許可されている限り、(WorkerThreadを作成するときに)状態を次のように保存できます。ファイルシステムとWorkerThreadインスタンス化のxmlは、ファイルが存在するかどうかを確認し、ファイルがシャットダウンされたときに残っていた場所から開始します。
ポイントa)私の例はメールサーバーでしたが、どちらもネットワークエンドポイントであり、利用できない可能性があります
アップデート:
今、私はそれがストレートJavaであると仮定しました(そして私はc#なので、プラットフォーム上ではそれほど頻繁ではないことを覚えておいてください)が、新しいバージョンのjavaまたはandroidでこのようなものの非同期ジェネリック型の簡単な例があるように見えます。 。
Android固有のマルチスレッディングについてはこのブログ投稿を参照してください。プラットフォーム固有の例についてはAndroidマルチスレッディングをGoogleで検索してください。