回答
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
public class AsyncExample extends Activity{
private String url="http://www.google.co.in";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
new AsyncCaller().execute();
}
private class AsyncCaller extends AsyncTask<Void, Void, Void>
{
ProgressDialog pdLoading = new ProgressDialog(AsyncExample.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
//this method will be running on UI thread
pdLoading.setMessage("\tLoading...");
pdLoading.show();
}
@Override
protected Void doInBackground(Void... params) {
//this method will be running on background thread so don't update UI frome here
//do your long running http tasks here,you dont want to pass argument and u can access the parent class' variable url over here
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
//this method will be running on UI thread
pdLoading.dismiss();
}
}
}
爲什麼你不想傳遞任何參數?你應該解釋一下......
這是怎麼回事通常工作(例如):
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i/(float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
,並執行它,你的呼叫:
new DownloadFilesTask().execute(url1, url2, url3);
來源:Android docs
創建AsyncTask
類,就好像你不想傳遞任何參數到doInBackground
:
public class LongOperation extends AsyncTask<Void, Void, String> {
public LongOperation(Context context) {
}
@Override
protected void onPreExecute() {
}
@Override
protected String doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(String result) {
}
}
和啓動的AsyncTask如不經過任何參數來執行:
LongOperation longOperation = new LongOperation(this);
longOperation.execute();
我注意到Android Studio自動完成不會給你「
根據AsyncTask,其
AsyncTask<Params, Progress, Result>
- PARAMS,發送到的參數的類型執行任務。
- 進度,在 背景計算期間發佈的進度單位的類型。
- 結果,後臺計算結果的類型。
所以,如果你想通過虛空中doInBackground只是傳遞無效到位則params的。
示例代碼:
class DownloadLink extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
//Do Your stuff here..
return null;
}
}
,並調用它爲:
new DownloadLink().execute();
這意味着params是任務的數組,並且所有任務的返回類型都是void – blackHawk
@blackHawk - 是 –
- 1. 如何在Android上正確使用AsyncTask?
- 2. 如何正確使用AsyncTask
- 3. 正確使用AsyncTask?
- 4. 如何正確應用AsyncTask?
- 5. AsyncTask和Android線程:如何正確使用它?
- 6. 正確使用的AsyncTask
- 7. 正確使用AsyncTask get()
- 8. Android:正確銷燬asyncTask?
- 9. 如何在Android中正確使用ViewPager
- 10. 如何在android中正確使用mediaPlayer?
- 11. 如何在Android中正確使用類
- 12. 如何使用AsyncTask正確使用Intent和Uri數據
- 13. 如何正確處理Android中的AsyncTask取消?
- 14. Android - 如何正確設置AsyncTask從URL中獲取JSON數據?
- 15. 在Android中使用AsyncTask
- 16. 如何在Android上正確使用setZOrderMediaOverlay?
- 17. 如何使用的AsyncTask在Android 4.2
- 18. 如何在android中遞歸調用AsyncTask?
- 19. 如何正確創建一個AsyncTask
- 20. Android中的ProgressDialog AsyncTask沒有在正確的時間顯示
- 21. 在asynctask中使用asynctask
- 22. 如何正確使用枚舉java/android
- 23. 如何正確使用Android UI的「layout_gravity」?
- 24. 如何正確使用canvas.drawPicture()Android
- 25. AsyncTask沒有在ListView中正確設置正確的圖像
- 26. 如何在Android應用程序中使用AsyncTask
- 27. 如何使用的Android的AsyncTask
- 28. 如何在Android中的AsyncTask中執行AsyncTask
- 29. 在Android ViewModel中使用AsyncTask可以嗎?
- 30. 在android中使用AsyncTask下載圖像
你試過? –
嘗試之前,你發佈的東西...閱讀博客和開發人員指南 – NullPointerException