[英]How to perform background process in android?
我正在IntentService中執行一些操作(將圖像上傳到webservice)。 請參閱下面的代碼。
在活動里面我叫這樣的服務。 我在捕獲圖像后調用下面的方法,即在onActivityResult內部。 當我在onActivityResult中調用此方法時,應用程序正在被掛起。 我能夠在IntentService中執行任務。 但是這種活動正在被絞死。
private void callService(){
Intent intent = new Intent(this, TestIntentService.class);
intent.putExtra("imageData", imageData);
startService(intent);
}
這是我的IntentService類。 我可以在callImageUploadAPI()中執行webservice調用。 我在這做錯什么嗎?
public class TestIntentService extends IntentService {
public TestIntentService() {
super("com.screens.testapp");
// TODO Auto-generated constructor stub
}
//imageData passed from the activity
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
if(intent != null){
Bundle extras = intent.getExtras();
imageData= extras.getString("imageData");
}
callImageUploadAPI(imageData);
}
private void callImageUploadAPI(final String imageData) {
// TODO Auto-generated method stub
try {
if (Log.checkNetworkStatus(TestIntentService.this)) {
} else {
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
謝謝
如果您需要在后台執行任務,Android會提供一個名為AsyncTask
的類,您可以將其擴展並用於執行網絡操作或任何其他繁重的操作。 這是Android Developer Website(AsyncTask Page)的一個例子:
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");
}
}
這可以通過這種方式在您的代碼中使用:
if (Log.checkNetworkStatus(TestIntentService.this)) {
new DownloadFilesTask().execute(url1, url2, url3);
} else {
}
為了您在后台使用服務執行操作。
您可以從活動中啟動服務,您可以為服務分配一個線程,並為該線程和UIThread分配通信的處理程序。
請查看: http : //developer.android.com/guide/components/services.html
偷偷偷看
服務是一種應用程序組件,可以在后台執行長時間運行的操作,但不提供用戶界面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.