2012-05-08 1 views
0

특정 위치의 모든 레스토랑을 나열하려는 Android 앱을 디자인하고 있습니다. 이것은 앱 출시에 발생합니다. 위치가 변경되면 앱이 이미 열려 있어도 식당 목록이 변경됩니다. Google에서 얻은 모든 사례는 버튼 클릭만으로 레스토랑을 채우는 데 사용됩니다. 하지만 내 경우에는 런치에서 발생하고 앱이 이미 시작된 경우 위치에 따라 목록이 변경되어야합니다.위치 변경 레스토랑 목록이 버튼 클릭 앱없이 자동으로 변경되어야합니다.

AsyncTask의 하위 클래스가있는 MainClass를 만들었으며이 하위 클래스에는 LocationListener를 구현하는 클래스가 있습니다. 하지만 문제는 위치를 변경하면 자동으로 결과를 얻기 위해 onLocationChange에서 doInBackground() 메서드를 다시 호출해야한다는 것입니다.

내가 어떻게해야하나요?

+0

게시물에 코드 샘플을 게시하고 문제의 일부분을 설명해주십시오. – Tim

답변

0

기본 클래스의 위치 변경 내용을 들어보십시오. (중요한) 변경 사항을 받으면 asynctask를 시작하여 레스토랑을 쿼리하십시오. 결과 (예 : 레스토랑의 배열)를 onPostExecute에 전달하고 이에 따라 UI를 업데이트합니다.

레스토랑을 쿼리하는 동안 업데이트를 사용하지 않도록 설정하거나 쿼리를 취소하고 새 업데이트가있을 때마다 새 쿼리를 시작하는 것이 좋습니다.

2

사용자 위치를 얻고 새로운 레스토랑 데이터를 수집하는 데 필요한 모든 로직을 Service에 입력하십시오. Service은 위치 업데이트를 청취 할 수 있습니다 (원하는 경우 항상 일정 간격으로 설정). 그러면 새 데이터가 필요한 상당한 변경이 발생할 때마다 AsyncTask으로 목록을 업데이트 할 수 있습니다.

은 (onPause()onResume() 방법 사이) 전경의 경우 Activity 동안 기간 동안 데이터 업데이트가 notifyDataSetChanged()를 호출 볼 경우 최신 정보를 얻을 콜백으로 등록하는 ActivityService에 바인딩 할 수 있습니다 당신의 목록에.

로컬로 바인딩 된 Service을 만드는 방법에 대한 자세한 내용은 here을 참조하십시오.

HTH

1

사용하는 일부 레스토랑의 목록 ArrayAdapter와 그것이 메인 클래스의 인스턴스의 저장은 다음 위치는 근처의 레스토랑을 retreive 및 onPostExecute는 ArrayAdapter와 내부 목록을 교체하고 notifyDataSetChanged()를 호출 할 AsyncTask를을 사용하여 변경 때마다.

관련 문제