diff options
author | emancebo <emancebo@cyngn.com> | 2015-08-27 12:12:55 -0700 |
---|---|---|
committer | Rohit Yengisetty <rohit@cyngn.com> | 2015-11-17 22:43:10 -0800 |
commit | b474ca6dbda4401d6dfb484802984cd76a3c20e6 (patch) | |
tree | 3370b3f60b92685373b77760e596ec69e1229c32 /info_lookup | |
parent | a91eea93664ead559b0a3a8022159a6ddf0a5e3d (diff) | |
download | android_packages_apps_ContactsCommon-b474ca6dbda4401d6dfb484802984cd76a3c20e6.tar.gz android_packages_apps_ContactsCommon-b474ca6dbda4401d6dfb484802984cd76a3c20e6.tar.bz2 android_packages_apps_ContactsCommon-b474ca6dbda4401d6dfb484802984cd76a3c20e6.zip |
LookupProvider updates
- Add isEnabled to the interface
- Make sure to start thread before getting current looper
- Make handler thread initialize idempotent
- Add destroy method to shut down thread and clean up lookup provider
Change-Id: Iaf350f1381aed69765adbef1752990126cfbeeda
Diffstat (limited to 'info_lookup')
3 files changed, 36 insertions, 9 deletions
diff --git a/info_lookup/src/com/cyanogen/lookup/phonenumber/LookupHandlerThread.java b/info_lookup/src/com/cyanogen/lookup/phonenumber/LookupHandlerThread.java index 5f59d481..4a594f3a 100644 --- a/info_lookup/src/com/cyanogen/lookup/phonenumber/LookupHandlerThread.java +++ b/info_lookup/src/com/cyanogen/lookup/phonenumber/LookupHandlerThread.java @@ -17,29 +17,45 @@ public class LookupHandlerThread extends HandlerThread implements Handler.Callba private Handler mHandler; private LookupProviderImpl mLookupProvider; private HashSet<LookupRequest> mSubmittedRequests; + private boolean mInitialized = false; public LookupHandlerThread(String name, Context ctx) { super(name); mContext = ctx; + mLookupProvider = new LookupProviderImpl(mContext, null); } public LookupHandlerThread(String name, int priority, Context ctx) { super(name, priority); mContext = ctx; + mLookupProvider = new LookupProviderImpl(mContext, null); } public boolean initialize() { - mLookupProvider = new LookupProviderImpl(mContext, null); - boolean isSuccessful = mLookupProvider.initialize(); - if (isSuccessful) { + if (mInitialized) { + return true; + } + + mInitialized = mLookupProvider.initialize(); + if (mInitialized) { mSubmittedRequests = new HashSet<>(); - mHandler = new Handler(getLooper(), this); start(); - } else { - mLookupProvider = null; + mHandler = new Handler(getLooper(), this); } - return isSuccessful; + return mInitialized; + } + + public boolean isProviderEnabled() { + return mLookupProvider.isEnabled(); + } + + public void tearDown() { + if (mInitialized) { + quit(); + mLookupProvider.disable(); + mInitialized = false; + } } public boolean fetchInfoForPhoneNumber(LookupRequest lookupRequest) { @@ -62,10 +78,10 @@ public class LookupHandlerThread extends HandlerThread implements Handler.Callba LookupRequest lookupRequest = (LookupRequest) msg.obj; switch (what) { case MSG_FETCH_INFO : - if (mLookupProvider != null) { + if (mInitialized) { mLookupProvider.fetchInfo(lookupRequest); } } return true; } -}
\ No newline at end of file +} diff --git a/info_lookup/src/com/cyanogen/lookup/phonenumber/contract/LookupProvider.java b/info_lookup/src/com/cyanogen/lookup/phonenumber/contract/LookupProvider.java index 1047b9aa..9b52453e 100644 --- a/info_lookup/src/com/cyanogen/lookup/phonenumber/contract/LookupProvider.java +++ b/info_lookup/src/com/cyanogen/lookup/phonenumber/contract/LookupProvider.java @@ -14,6 +14,11 @@ public interface LookupProvider { boolean initialize(); /** + * Returns true if the provider is installed and enabled + */ + boolean isEnabled(); + + /** * Request to lookup contact info asynchronously. The callback is embedded * within {@link LookupRequest} */ diff --git a/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java b/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java index b35d8e86..37b56017 100644 --- a/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java +++ b/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java @@ -29,4 +29,10 @@ public class LookupProviderImpl implements LookupProvider { public void disable() { /* NOT IMPLEMENTED */ } + + @Override + public boolean isEnabled() { + /* NOT a valid implementation */ + return false; + } } |