title: requestLocationUpdates gives error "Can't create Handler inside thread that has not called Looper.prepare()
body: <p>I know this sort of question exists but I'm confused here. I'm using this code:</p>
  
  <pre><code>    public class NewWaitAppActivity extends Activity {
      private Handler mHandler;
      @Override
          public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          mHandler = new Handler();
          lcmgr = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
          Thread LocThread = new Thread(mLocationUpdater);
          Log.d("TAG","About to start worker thread");
          LocThread.start();
  }
  
  public void startTimer(View v) {
          if (mStartTime == 0L) {
              mStartTime = System.currentTimeMillis();
              mHandler.removeCallbacks(mUpdateTimeTask);
              mHandler.postDelayed(mUpdateTimeTask, 100);
          }
      }
  
  private Runnable mUpdateTimeTask = new Runnable() {
          public void run() {
              final long start = mStartTime;
              long millis = System.currentTimeMillis() - start;
              int seconds = (int) (millis / 1000);
              int minutes = seconds / 60;
              seconds = seconds % 60;
  
              TextView timer = (TextView) findViewById(R.id.time_elapsed);
  
              if (seconds &lt; 10) {
                  timer.setText("" + minutes + ":0" + seconds);
              } else {
                  timer.setText("" + minutes + ":" + seconds);
              }
  
              mHandler.postDelayed(this, 1000);
          }
      };
  LocationListener locationListener = new LocationListener() {
  
          public void onLocationChanged(Location location) {
            // Called when a new location is found by the network location provider.
            mStopTimer();
          }
  };
  
  
  private Runnable mLocationUpdater = new Runnable(){
          public void run(){
  
              Log.d("TAG","Inside worker thread");
              lcmgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
      }
  };
  }
  </code></pre>
  
  <p>I am basically trying to stop the timer of the main thread when a location updates. The application doesn't even start, it gives the error mentioned above during runtime. The error is due to requestLocationUpdates(). It seems like I can't call stopTimer() inside onLocationChanged(). How can I correct this?</p>