[我正在使用AsyncTask下载文件。服务中的asynkTask。下载后,我想让服务使用asynkTask的onPostexecute返回的数据执行某些任务。我可以从日志中看到数据,在onPostexecute中,但是我无法在服务中获取它。我看到了很多答复,但是对我没有用,我希望有人能为我提供解决方案。在此先感谢您。
我从主要活动中启动了服务。
**编辑3 **也不例外,我将上下文添加到新的DownloadFileFromURL(this).execute(file_url);
此代码正在运行。
编辑后,我正在执行。这是我正在使用的代码:该服务:
public class DownloadService extends Service implements OnTaskCompleted {
// File url to to download
private String file_url = "http://192.168.1.150:8080/TestAndroid/DownloadServlet/Desert.jpg";
public int onStartCommand(Intent intent, int flags, int startId) {
int rssi1 = intent.getIntExtra("key1", 0);
new DownloadFileFromURL(this).execute(file_url);
return START_STICKY; }
//EDIT
DownloadFileFromURL task = new DownloadFileFromURL(this);
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onTaskCompleted(String result){
//your stuff on complete of task
Toast.makeText(getBaseContext(), "Service receiving from post"+result, Toast.LENGTH_LONG).show();
}
}
这是我的DownloadFileFromURL类
class DownloadFileFromURL extends AsyncTask<String, String, String> {
//Edit
private OnTaskCompleted listener;
public DownloadFileFromURL (OnTaskCompleted listener){
this.listener=listener;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
/**
* Downloading file in background thread
* */
protected String doInBackground(String... f_url) {
int count;
try { //Download }
catch (Exception e) { }
return reslut;
}
protected void onProgressUpdate(String... progress) {
}
/**
* After completing background task
*
* **/
@Override
protected void onPostExecute(String reslut) {
listener.onTaskCompleted(reslut);
Log.i("reslut","**************"+reslut);//i want to send this data to the service
}
}
接口:
public interface OnTaskCompleted{
void onTaskCompleted(String values);
}
interface