2014-04-14 73 views
0

我想根據他的當前位置爲用戶提供一些優惠。如果偵聽器與我的Activity不在同一個類中,如何使用asyncTask +位置偵聽器?

這意味着UI應該等待(不被阻止,但等待動畫) - 所以我曾經想過使用位置監聽器和一個asyncTask。

但聽衆簽名返回void

public class MyLocationListener implements LocationListener { 

    public void onLocationChanged(final Location loc) { 

和asynTask不會在這裏幫助(因爲它是從我的活動saperated類)

你會如何建議這樣做?

+0

只是實現自己的回調/接口(例如,onLocationFound(雙緯度,雙LNG)和火在你的活動這個活動?你知道我的意思嗎? –

+0

但是我可以從locationManager類訪問它嗎?ui線程如何等待它呢? –

+0

只要給我5分鐘我會給你寫一個例子 –

回答

0

希望這有助於你

public class MyLocationListener extends LocationListener{ 

    public interface MyLocCallbacks{ 
     onLocFound(double lat, double lng); 
    } 

    private MyLocCallbacks mCallbacks; 

    public MyLocationListener(MyLocCallbacks callback){ 
     this.mCallbacks = callback; 

     //Make sure to start the LocationSerivce here 
    } 

    public void onLocationChanged(final Location loc) { 
     this.mCallbacks.onLocFound(log.getLatitude(), loc.getLongitude()) 
    } 

} 

MainActivity

public class MainActivity implements MyLocCallbacks{ 

    private MyLocationListener mLocListener; 

    onCreate(S...){ 
     mLocListener = new MyLocationListener(this); //this for the interface 
    } 

    //This one is called by your Location Listener 
    @Override 
    onLocFound(double lat, double lng){ 
     startAnimation(); 
    } 


    private void startAnimation(){ 
     //do here your startAnimation, 
     //before you could show a simple loading screen 
    } 
} 
+0

我的意思是我希望在等待時間內將動畫作爲進度條運行。不是當收到 –

+0

是的,所以啓動它在你的oncreate並停止它在startAnimation() –

相關問題