Merge cherrypicks of ['ag/20330542'] into tm-qpr1-release.

Change-Id: Ib3e2b47879496b022977de3c46342afbfd9f1137
diff --git a/looper_backed_event_loop.cpp b/looper_backed_event_loop.cpp
index f759948..e97d1d9 100644
--- a/looper_backed_event_loop.cpp
+++ b/looper_backed_event_loop.cpp
@@ -30,7 +30,7 @@
 
   ~EventLoopCallback() override = default;
 
-  virtual void handleMessage(const android::Message& message) {
+  void handleMessage(const android::Message& message) override {
     callback_();
   }
 
@@ -77,16 +77,13 @@
 }
 
 void LooperBackedEventLoop::PostTask(const std::function<void()>& callback) {
-  sp<android::MessageHandler> event_loop_callback =
-      new EventLoopCallback(callback);
-  looper_->sendMessage(event_loop_callback, Message());
+  looper_->sendMessage(sp<EventLoopCallback>::make(callback), Message());
 }
 
 void LooperBackedEventLoop::PostDelayedTask(
     const std::function<void()>& callback,
     int64_t delay_ms) {
-  sp<android::MessageHandler> looper_callback = new EventLoopCallback(callback);
-  looper_->sendMessageDelayed(ms2ns(delay_ms), looper_callback, Message());
+  looper_->sendMessageDelayed(ms2ns(delay_ms), sp<EventLoopCallback>::make(callback), Message());
 }
 
 bool LooperBackedEventLoop::WatchFileDescriptor(