2012-09-23 147 views
0

我不清楚如何在Android中工作的程序。我最近兩個月開始從事Android工作,同時也是Java初學者。所以,我正在努力發展和學習。這是我實現的代碼片段,我不太清楚它是如何按照我的要求工作的。活動的生命週期是什麼?

activity{ 
    onCreate(){ 
      /* here i am using google maps api and trying to plot the current location*/     
     OverlayItem overlayItem1 = new OverlayItem(ourLocation,"Our Location","Position"); 
     CustomPinpoint custom1 = new CustomPinpoint(d, Activity.this); 
      custom1.insertPinpoint(overlayItem1); 
      overlayList.add(custom1);    
       controller.animateTo(ourLocation); 
     } 
    private class TouchOverlay extends com.google.android.maps.Overlay{ 
      public boolean onTouchEvent(MotionEvent event, MapView map){ 
       onZoom(); 
     } 
     } 
    public boolean onCreateOptionsMenu(Menu menu){} 
    public boolean onOptionsItemSelected(MenuItem item){ 
     case.X: 
     getGPSPoints();//Here i will be getting some gps points from stored database 
     // and I would like to plot them all on the map. 
     TouchOverlay touchOverlay = new TouchOverlay(); 
    overlayList.add(touchOverlay); 
    } 
    onPause(){ 
      super.onPause(); 
    lm.removeUpdates(this); 
    } 
    onResume(){ 
      super.onResume(); 
    lm.requestLocationUpdates(towers, 500, (float) 0.5, this); 
    } 
    onLocationChanged(Location l) { 
    // TODO Auto-generated method stub 
    clearmap(); 
    lat = (int) (l.getLatitude()*1E6); 
    longi = (int) (l.getLongitude()*1E6); 
    GeoPoint ourLocation = new GeoPoint(lat, longi); 
    CustomPinpoint custom = new CustomPinpoint(d, TrafficMapActivity.this); 
      OverlayItem overlayItem = new OverlayItem(ourLocation,"Our location","Position"); 
      custom.insertPinpoint(overlayItem); 
      overlayList.add(custom); 
     } 
     } 

我的問題是,當將onLocationChanged方法被調用,也的onTouchEvent方法?

我已經創建了一個方法來getGPSPoints(),我想繪製在地圖上獲得的點。我的意圖是它像谷歌地圖交通層。當我們拖動屏幕或放大/縮小時,我應該繼續繪製。爲此,我在TouchOverlay類中使用onZoom()方法中的相同getGPSPoints方法。

但是,當我第一次選擇該選項並進行第一次放大/縮小操作時,它只是繪製一次。如果我需要繪製剩餘部分,則必須按照當前實現再次單擊該選項。這項活動如何運作,我應該擁有它?

+6

【活動生命週期(http://developer.android.com/ reference/android/app/Activity.html#ActivityLifecycle) – Lucifer

回答

1

您的onCreate方法在Android操作系統必須「創建」您的活動時調用。

這會在您的活動初始加載時發生,並且每當操作系統自動銷燬您的活動或者您致電活動的finish()方法時。

onCreate方法之後是另一個名爲onStart的Activity方法。

當活動現在對用戶可見時,將會調用它。

關於onLocationChangedonTouchEvent的實現,這兩種類型的方法由設置爲該對象的偵聽器執行。

例如,onLocationChanged將在您的地圖偵聽器每次確定位置發生變化時執行。

onTouchEvent將在用戶收到觸摸事件時隨時執行。

您的和onResume方法是Activity類的一部分,這些方法類似於onCreate,儘管它們在不同的時間被調用。

具體來說,被稱爲每當你的活動不是前面,專注的看法。

onResume方法與相反 - 當您的活動視圖現在成爲屏幕上的焦點視圖時,它將被調用。

http://developer.android.com/training/basics/activity-lifecycle/pausing.html

+0

好的。你的意思是onCreate只會在應用程序啓動時運行一次? – ChanChow

+0

不,如果您調用了finish()方法,或者視圖未處於焦點狀態並且VM將其銷燬以獲取更多內存,也可能會調用它。 – mrres1

+0

與我創建的TouchOverlay類相關的請你解釋一下它的生命週期?我需要覆蓋各種touchevent的所有數據。 – ChanChow

0

這一切都在下圖中(其他地方dev的網站上找到):

Android Lifecycle

+0

嘿巴拉克,你能請我解釋我的背景。 – ChanChow