Handler handler = ((Gallery) mContext).getHandler();
ContentObserver observer = new ContentObserver(handler) {
public void onChange(boolean selfChange) {
- MediaSet mediaSet = feed.getCurrentSet();
- if (mediaSet != null) {
- CacheService.markDirtyImmediate(mediaSet.mId);
- refreshUI(feed, mediaSet.mId);
+ final boolean isPaused = ((Gallery) mContext).isPaused();
+ if (isPaused) {
+ MediaSet mediaSet = feed.getCurrentSet();
+ if (mediaSet != null) {
+ CacheService.markDirtyImmediate(mediaSet.mId);
+ refreshUI(feed, mediaSet.mId);
+ }
}
CacheService.senseDirty(mContext, new CacheService.Observer() {
public void onChange(long[] ids) {
+ if (!isPaused)
+ return;
if (ids != null) {
int numLongs = ids.length;
for (int i = 0; i < numLongs; ++i) {
Uri uriVideos = Video.Media.EXTERNAL_CONTENT_URI;
ContentResolver cr = mContext.getContentResolver();
mObserver = observer;
- cr.registerContentObserver(uriImages, false, observer);
- cr.registerContentObserver(uriVideos, false, observer);
+ cr.registerContentObserver(uriImages, true, observer);
+ cr.registerContentObserver(uriVideos, true, observer);
sObserverActive = true;
}
public void shutdown() {
- if (ImageManager.isMediaScannerScanning(mContext.getContentResolver())) {
- stopListeners();
- }
+ stopListeners();
}
private void stopListeners() {
mWaitingForMediaScanner = false;
while (ImageManager.isMediaScannerScanning(mContext.getContentResolver())) {
// MediaScanner is still running, wait
+ if (Thread.interrupted())
+ return;
mWaitingForMediaScanner = true;
try {
if (mContext == null)
showToast(mContext.getResources().getString(R.string.initializing), Toast.LENGTH_LONG);
Thread.sleep(6000);
} catch (InterruptedException e) {
-
+ return;
}
}
if (mWaitingForMediaScanner) {