亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為不同的進程運行相同的 AsyncTask 類?

如何為不同的進程運行相同的 AsyncTask 類?

慕哥9229398 2021-12-01 19:34:25
我正在嘗試構建一個帶有 2 個按鈕的演示應用程序,一個下載視頻,另一個下載 PDF。我想通過AsyncTask. 到目前為止,我已經有了帶有已實現方法的入門代碼。我還沒有添加我想要下載的代碼,因為我想弄清楚單獨下載背后的邏輯,所以現在,我有日志消息。這是代碼:public class MainActivity extends AppCompatActivity {    Button downloadVideo, downloadPDF;    DownloadingClass downloadingClass = new DownloadingClass();    private static final String TAG = "omar.asynctaskdemo;";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        downloadVideo = findViewById(R.id.download_video);        downloadPDF = findViewById(R.id.download_pdf);        downloadVideo.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {}        });        downloadPDF.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {}        });    }    private class DownloadingClass extends AsyncTask<Void, Void, Void>{        @Override        protected void onPreExecute() {            super.onPreExecute();            Log.d(TAG, "doInBackground: Before");        }        @Override        protected void onPostExecute(Void aVoid) {            super.onPostExecute(aVoid);            Log.d(TAG, "doInBackground: After");        }        @Override        protected void onProgressUpdate(Void... values) {            super.onProgressUpdate(values);            Log.d(TAG, "doInBackground: Progress");        }        @Override        protected Void doInBackground(Void... voids) {            Log.d(TAG, "doInBackground: Content to download");            return null;        }    }}我很感激關于如何去做的簡明解釋。
查看完整描述

2 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

不要這樣做

DownloadingClass downloadingClass = new DownloadingClass();

總是在你開始任務之前創建:

new DownloadingClass().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

這是因為您不能重用 AsyncTask。它有狀態,一旦狀態為“已完成”就不會再次運行。


查看完整回答
反對 回復 2021-12-01
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

如果您在兩種下載方法中具有相同的輸入/輸出類型,您可以DownloadingClass通過為每個方法聲明一個對象來使用相同的類型,例如:

DownloadingClass downloadPDF = new DownloadingClass();
DownloadingClass downloadVideo = new DownloadingClass();

然后就打電話downloadPDF.execute();/downloadVideo.execute();


查看完整回答
反對 回復 2021-12-01
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號