내 응용 프로그램에는 웹에 연결하기 위해 AsyncTask를 호출 할 수있는 곳이 여러 개 있습니다. 활동 등을 통해 백그라운드 서비스를 이용할 수 있습니다.안드로이드에서 동기화 작업
SQLite 데이터베이스를 읽고 쓰고 있기 때문에 비슷한 작업에서 여러 작업이 겹치는 경우 (GetMail이 백그라운드에서 실행되고 사용자가 수동으로 시작했다고 가정 해 봅시다) 다양한 문제가 있습니다.
이 작업의 유형을 동기화하려면 다음과 같은 코드를 작성하십시오. 나는 그것을 테스트하는 방법을 잘 모르겠어요, 확인을 실행하는 것 같지만 나는이 유효 인 경우 귀하의 의견을 얻고 싶었다 .. 여기
public enum AsyncTasks
{
GetMail,
PostMail,
}
public class MyApplication extends Application
{
private final ArrayList<AsyncTasks> mLockedAsyncTasks = new ArrayList<AsyncTasks>();
public boolean lockAsyncTask(AsyncTasks task)
{
synchronized (mLockedAsyncTasks)
{
if (!mLockedAsyncTasks.contains(task))
{
mLockedAsyncTasks.add(task);
return true;
}
return false;
}
}
public void unlockAsyncTask(AsyncTasks task)
{
synchronized (mLockedAsyncTasks)
{
if (mLockedAsyncTasks.contains(task))
{
mLockedAsyncTasks.remove(task);
}
}
}
}
아이디어는 내가 lockAsyncTask
를 호출하면 성공하고있어 것입니다 - 나는 진행 HTTP를 사용하고 그렇지 않으면 이미 실행 중이므로 건너 뜁니다.