Είναι αυτό σωστή πρακτική;
Επίσης καλώντας την removeUpdates(this) στον location manager, κάνω unregister τον listener, σωστά; Γιατί όμως αφού συμβεί το unregister, όταν ξαναστέλνω συντεταγμένες το location μου στον χάρτη γίνεται update?
Δεν είμαι σίγουρος αν κατάλαβα καλά τι έχεις κάνει και πως το έχεις κάνει καθώς και τι θες ακριβώς να πετύχεις οπότε ότι θα πω μπορεί να είναι "εκτός".
Τα όσα είπε ο Μιχάλης είναι σωστά αν και δεν κατάλαβα το κομμάτι "Θα μπορούσε κάποιος να δημιουργήσει ένα μόνο από τα δύο προηγούμενα και για τις δύο λειτουργικότητες..."
Θέλω να σταθώ σε αυτό που είπες οτι έχεις υλοποιήσει το Interface.Αν κατάλαβα καλά προσπαθείς να πετύχεις την αλλαγή της κουκίδας του χρήστη στο χάρτη. Αν αυτό είναι το ζητούμενο τότε να σου πω πως οτι η κλάση MyLocationOverlay υλοποιεί από μόνη της το Interface LocationListener.
Άρα γνωρίζει πότε να ανανεώσει τη θέση της κουκίδας στο χάρτη και το κάνει αυτόματα σε ξεχωριστό thread.
Η runOnFirstFix όπως το όνομά της υποδηλώνει προορίζεται για να καλείται μια φορά και δημιουργεί ξεχωριστό thread όπως είπε και ο Μιχάλης και εκτελεί το runnable που του περνάς. Θυμίζοντάς σου αυτό νομίζω οτι τώρα σου δίδεται και η απάντηση στο δεύτερο ερώτημά σου.