Do not start suggestion loader if host isn't attached.
Change-Id: I1ab1de8f0bea6c66d8415e06aedcc7cbc6baf89c Fixes: 68759380 Test: robotests
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.dashboard;
|
package com.android.settings.dashboard;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.app.LoaderManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -95,6 +96,14 @@ public class DashboardSummary extends InstrumentedFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LoaderManager getLoaderManager() {
|
||||||
|
if (!isAdded()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return super.getLoaderManager();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
|
@@ -21,6 +21,7 @@ import android.content.Context;
|
|||||||
import android.content.Loader;
|
import android.content.Loader;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.service.settings.suggestions.Suggestion;
|
import android.service.settings.suggestions.Suggestion;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
@@ -44,8 +45,10 @@ public class SuggestionControllerMixin implements SuggestionController.ServiceCo
|
|||||||
void onSuggestionReady(List<Suggestion> data);
|
void onSuggestionReady(List<Suggestion> data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns {@link LoaderManager} associated with the host.
|
* Returns {@link LoaderManager} associated with the host. If host is not attached to
|
||||||
|
* activity then return null.
|
||||||
*/
|
*/
|
||||||
|
@Nullable
|
||||||
LoaderManager getLoaderManager();
|
LoaderManager getLoaderManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,9 +85,12 @@ public class SuggestionControllerMixin implements SuggestionController.ServiceCo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onServiceConnected() {
|
public void onServiceConnected() {
|
||||||
mHost.getLoaderManager().restartLoader(SuggestionLoader.LOADER_ID_SUGGESTIONS,
|
final LoaderManager loaderManager = mHost.getLoaderManager();
|
||||||
|
if (loaderManager != null) {
|
||||||
|
loaderManager.restartLoader(SuggestionLoader.LOADER_ID_SUGGESTIONS,
|
||||||
null /* args */, this /* callback */);
|
null /* args */, this /* callback */);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onServiceDisconnected() {
|
public void onServiceDisconnected() {
|
||||||
|
@@ -23,7 +23,6 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import android.app.LoaderManager;
|
import android.app.LoaderManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.MatrixCursor;
|
|
||||||
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
@@ -88,4 +87,14 @@ public class SuggestionControllerMixinTest {
|
|||||||
verify(loaderManager).restartLoader(SuggestionLoader.LOADER_ID_SUGGESTIONS,
|
verify(loaderManager).restartLoader(SuggestionLoader.LOADER_ID_SUGGESTIONS,
|
||||||
null /* args */, mMixin /* callback */);
|
null /* args */, mMixin /* callback */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onServiceConnected_hostNotAttached_shouldDoNothing() {
|
||||||
|
when(mHost.getLoaderManager()).thenReturn(null);
|
||||||
|
|
||||||
|
mMixin = new SuggestionControllerMixin(mContext, mHost, mLifecycle);
|
||||||
|
mMixin.onServiceConnected();
|
||||||
|
|
||||||
|
verify(mHost).getLoaderManager();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user