나는 여러 탭으로 안드로이드 응용 프로그램을 devloping 오전. 내 탭에는 다음이 있습니다.안드로이드에서 한 번에 여러 서비스를 실행
첫 번째 탭 - 잡지의 보관 파일을 격자보기로 보여줍니다. 의도는 그리드보기 항목을 탭할 때 웹 사이트에서 큰 파일을 다운로드해야합니다. 이를 위해 파일을 다운로드하는 ASYNC 태스크가있는 서비스를 작성했습니다. 코드를 보여 줬어.
public class DownloadArchivesService extends BaseService {
private static final String TAG = "DownloadArchivesServices";
private static final String STOP = "stop_modificator";
public static final String ALREADY_RUNNING= "DownloadArchivesService_Already_Running";
public static final String ARCHIVES_PERCENTAGE_PROGRESS ="Archives_Percentage_Progress";
public static final String UPDATE_ARCHIVES_PROGRESS = "Update_Archives_Progress";
@Override
public void onCreate() {
getPreferences().edit().putBoolean(ALREADY_RUNNING, true).commit();
application = (JfwApplication)this.getApplicationContext();
context = this;
session = application.getSession();
calendar = Calendar.getInstance();
dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
magazineManager = new MagazineManager(this);
//magazine = new Magazine(fileName, fileName, "", "", this);
new AsyncTask<String, Integer, String>() {
NumberFormat formater = NumberFormat.getPercentInstance(Locale.getDefault());
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
// I do my download here }
@Override
protected void onProgressUpdate(Integer... p) {
if (isCancelled()) {
return;
}
//I udpate my progress bar here }
@Override
protected void onPostExecute(String result) {
Intent intentInvalidate = new Intent(ArchivesActivity.GRID_INVALIDATE);
sendBroadcast(intentInvalidate);
super.onPostExecute(result);
}
}.execute();
super.onCreate();
}
두 번째 탭으로 이동하면 웹 사이트에서 몇 장의 사진을 다운로드하여 화면에 표시해야합니다. 위의 DownloadImagesService와 비슷한 서비스를 작성했습니다.
그러나 문제는 위에서 언급 한 DownloadArchivesService가 실행 중일 때 (즉, 에 DownloadArchivesService를 호출하기위한 격자보기 항목을 누를 때) 두 번째 탭으로 이동하여 DownloadImageService (다운로드 사진)가 호출되지 않고 DownloadArchivesService가 완료 될 때까지 기다립니다. 이렇게하면 첫 번째 서비스가 완료되기 전에 사용자가 기다릴 수 있습니다. 서비스가 주 스레드에서 실행되고 하나의 서비스가 이미 실행중인 서비스가 실행될 때까지 기다려야한다는 것을 알고 있습니다. 예기치 않은 서비스를 기다리지 않고 다른 서비스 (또는 백그라운드 작업)를 동시에 실행할 수있는 방법이 있습니까?
서비스, 의도 서비스 및 스레드에 대한 다양한 문서를 살펴 보았습니다. 그러나 나는 andorid가 동시 서비스를 처리하는 방법에 대해이 특별한 것을 강조 할 수 없었다.
나는 이것에 대한 도움을 크게 주시면 감사하겠습니다. 제 설명이 명확하지 않은 경우 알려주십시오.
감사합니다.
다른 상속 당신의 서비스 중 하나로,이 목적을 위해 집행을 사용하는 것이 좋습니다까요? 또는 같은 학급의 두 사람 모두?직접 BaseService 클래스를 작성 했습니까? 아니면 Android와 함께 제공 되었습니까? 확실하지 atm. 그렇다면이 게시물을 확인하십시오 : http://stackoverflow.com/questions/8150430/android-multiple-services-dont-run-as-expected?rq=1 – pumpkee
@ Androidika, 두 서비스 모두 BaseService 클래스를 상속합니다. 이것은 android 클래스가 아닙니다. –
@androidika ,. 내가 언급 한 소식을 보았습니다. 나는 서비스를 독립적으로 만들려고 노력할 것이다. 당신의 도움을 주셔서 감사합니다. 그것은 매우 빨랐다. 사실 저는 모든 게시물이 저에게 준 명확성을 통해서만 제 신청서를 작성하고 있습니다. 모든 도움에 감사드립니다. –