-1

Xml Web サービスを使用して、画像や動画などのデータをサーバーにアップロードする必要があります。Androidで非同期タスクを使用してアップロードできますが、すべてのデータをバックグラウンドでサーバーにアップロードする必要があるため、進行状況バーが表示されません。

同じことを達成するためにサービスを使用すると思いますが、サービスを使用するのは正しいアプローチですか? アクティビティをサービスに変換するにはどうすればよいですか。これを達成する他の方法はありますか?

非同期タスクのボタンクリックイベントでコードの下に書いています:

  UploadDataInBackground uploader = new UploadDataInBackground();
  uploader.execute(ReplyForm.this, true, replyform);    // it is asynch class
4

3 に答える 3

1

AsyncTask でこれを続ける必要があります。進行状況ダイアログを表示したくない場合は、コードのその部分を簡素化、削除、またはコメントアウトします。それはあなたのonPreExecute()とonPostExecute()にあるはずです。

于 2012-08-28T11:27:24.550 に答える
0

独自に実装するだけです。Service`を使用してファイルをダウンロードし、Androidでファイルをダウンロードし、ProgressDialogに進行状況を表示するには、Serviceこの投稿を参照してください。Services, but you must implement your own upload

于 2012-08-28T11:57:50.600 に答える
0

ResultReceiver を使用して実行できます。大きなビデオをサーバーにアップロードするアプリケーションを作成し、次のようなものを使用しました。

public class MyResultReceiver extends ResultReceiver {

    public final String TAG = getClass().getSimpleName();
    private Receiver mReceiver;

    public TmResultReceiver(Handler handler) {
        super(handler);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {
        // TODO Auto-generated method stub
        Log.d("MyResultReceiver", "onReceiveResult");
        if( mReceiver != null ){
            mReceiver.onReceiveResult(resultCode, resultData);
        }
    }

    public void setReceiver(Receiver receiver) {
        //Log.d("MyResultReceiver", "setReceiver");
        mReceiver = receiver;
    }

    public interface Receiver {
        public void onReceiveResult(int resultCode, Bundle resultData);
    }   

}
于 2012-08-28T11:55:29.977 に答える