0

こんにちは私はダウンロードとアップロードに使用されるアクティビティを作成しました。メニュー(アイテム:ダウンロード、アップロード、削除、終了)を使用しました。しかし、ダウンロードボタンを押すとダウンロード作業が始まりますが、このタスクが完了するまでメニューボタンは消えません。通知なしにユーザーを苛立たせるでしょう。メニューを押した直後に非表示にする方法と、ダウンロードとアップロードのタスクについてユーザーに通知するプログレスバーを含める方法。

こんにちは私はメソッドを持っています:

 void downloadFile(SmbFile file,String desPath)
 void downloadFolder(SmbFile folder,String tempStore)
 void uploadFile(File file,SmbFile destination)
 void uploadFolder(File f,SmbFile destination)

非同期タスクを拡張する以下のコードで、これらのメソッドを追加する場所を教えてください...

 class helper extends AsyncTask
{

@Override
protected Object doInBackground(Object... arg0) {
    // TODO Auto-generated method stub
    return null;
}

 }
4

2 に答える 2

1

2つの差分型パラメーターを使用するため、コンストラクターを使用できます(または、渡すパラメーターにgetter、setterを使用します)。

public class Helper extends AsyncTask<Integer, Void, Void> {

//The filed you want to pass
private SmbFile file;
private String desPath;
private SmbFile folder;
private String tempStore;
private File file;
private SmbFile destination;

//Create setter

public void setFile(SmbFile file) {
    this.file = file;
}

public void setDesPath(String desPath) {
    this.desPath = desPath;
}

public void setFolder(SmbFile folder) {
    this.folder = folder;
}

public void setTempStore(String tempStore) {
    this.tempStore = tempStore;
}

public void setFile(File file) {
    this.file = file;
}


public void setDestination(SmbFile destination) {
    this.destination = destination;
}


@Override
protected Void doInBackground(Integer... params) {
    //check flag to excute exactly method
    switch (params[0]) {
    case 0:
                    //Call your download file method
        downloadFile(file,desPath);
        break;
    case 1:
                   //Call your download folder method
        downloadFolder(folder,tempStore);
   //etc...
    default:
        break;
    }
    return null;
}

}

ダウンロードメニューを押すと、非同期タスクを呼び出すことができます。

//Download the file
Helper helper = new Helper();
//set file and des path for download file
helper.setFile(your_file);
helper.setDesPath(your_despath);
//Excute the download file method
helper.excute(0);

//Download the folder
 //set file and des path for download file
helper.setFolder(your_folder);
helper.setTempStore(your_tempStore);
//Excute the download folder method
helper.excute(1);

//etc...

: AsyncTaskの使用方法を理解するには、このリンクを注意深くお読みください。

于 2012-05-05T14:29:02.970 に答える
0

UIスレッドでダウンロードが行われているため、UIがブロックされていると思います。したがって、ダウンロードプロセスをバックグラウンドスレッドに移動します。それはあなたの問題を解決します。

于 2012-05-05T12:36:29.110 に答える