Merge pull request #1465 from mfietz/issue/1464-oom

Lower memory usage
This commit is contained in:
Tom Hennen 2015-12-13 18:58:32 -05:00
commit 755bdc5afb
5 changed files with 40 additions and 27 deletions

View File

@ -1,10 +1,12 @@
package de.danoeh.antennapod.activity; package de.danoeh.antennapod.activity;
import android.annotation.TargetApi;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.graphics.PixelFormat; import android.graphics.PixelFormat;
import android.media.AudioManager; import android.media.AudioManager;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
@ -12,7 +14,6 @@ import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.SeekBar; import android.widget.SeekBar;
@ -20,9 +21,9 @@ import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView; import android.widget.TextView;
import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.MaterialDialog;
import com.bumptech.glide.Glide;
import de.danoeh.antennapod.R; import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.service.playback.PlaybackService;
@ -239,6 +240,19 @@ public abstract class MediaplayerActivity extends ActionBarActivity
Log.d(TAG, "onDestroy()"); Log.d(TAG, "onDestroy()");
} }
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
Glide.get(this).trimMemory(level);
}
@Override
public void onLowMemory() {
super.onLowMemory();
Glide.get(this).clearMemory();
}
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu); super.onCreateOptionsMenu(menu);

View File

@ -33,8 +33,8 @@
<ImageView <ImageView
android:id="@+id/imgvCover" android:id="@+id/imgvCover"
android:layout_height="wrap_content" android:layout_height="64dp"
android:layout_width="wrap_content" android:layout_width="64dp"
android:layout_alignLeft="@id/txtvPlaceholder" android:layout_alignLeft="@id/txtvPlaceholder"
android:layout_alignTop="@id/txtvPlaceholder" android:layout_alignTop="@id/txtvPlaceholder"
android:layout_alignRight="@id/txtvPlaceholder" android:layout_alignRight="@id/txtvPlaceholder"

View File

@ -46,8 +46,8 @@
android:ellipsize="end"/> android:ellipsize="end"/>
<ImageView <ImageView
android:id="@+id/imgvCover" android:id="@+id/imgvCover"
android:layout_width="wrap_content" android:layout_width="64dp"
android:layout_height="wrap_content" android:layout_height="64dp"
android:layout_alignLeft="@id/txtvPlaceholder" android:layout_alignLeft="@id/txtvPlaceholder"
android:layout_alignTop="@id/txtvPlaceholder" android:layout_alignTop="@id/txtvPlaceholder"
android:layout_alignRight="@id/txtvPlaceholder" android:layout_alignRight="@id/txtvPlaceholder"

View File

@ -19,7 +19,7 @@ import android.os.Build;
import android.os.IBinder; import android.os.IBinder;
import android.os.Vibrator; import android.os.Vibrator;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat; import android.support.v7.app.NotificationCompat;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.util.Pair; import android.util.Pair;
@ -30,7 +30,6 @@ import android.widget.Toast;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException;
import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.ClientConfig;
import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.R;
@ -808,14 +807,11 @@ public class PlaybackService extends Service {
.load(info.playable.getImageUri()) .load(info.playable.getImageUri())
.asBitmap() .asBitmap()
.diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
.into(-1, -1) // this resizing would not be exact, so we have .centerCrop()
// scale the bitmap ourselves .into(iconSize, iconSize)
.get(); .get();
icon = Bitmap.createScaledBitmap(icon, iconSize, iconSize, true); } catch(Throwable tr) {
} catch (InterruptedException e) { Log.e(TAG, Log.getStackTraceString(tr));
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} }
} }
} }
@ -835,7 +831,8 @@ public class PlaybackService extends Service {
String contentTitle = info.playable.getFeedTitle(); String contentTitle = info.playable.getFeedTitle();
Notification notification = null; Notification notification = null;
NotificationCompat.Builder notificationBuilder = new android.support.v7.app.NotificationCompat.Builder( // Builder is v7, even if some not overwritten methods return its parent's v4 interface
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(
PlaybackService.this) PlaybackService.this)
.setContentTitle(contentTitle) .setContentTitle(contentTitle)
.setContentText(contentText) .setContentText(contentText)

View File

@ -17,12 +17,13 @@ import android.support.v4.media.session.PlaybackStateCompat;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
import android.util.Pair; import android.util.Pair;
import android.view.Display;
import android.view.InputDevice; import android.view.InputDevice;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.SurfaceHolder; import android.view.SurfaceHolder;
import android.view.WindowManager;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.Target;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
@ -292,20 +293,21 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, p.getDuration()); builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, p.getDuration());
builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, p.getEpisodeTitle()); builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, p.getEpisodeTitle());
builder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, p.getFeedTitle()); builder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, p.getFeedTitle());
if (p.getImageUri() != null) { if (p.getImageUri() != null && UserPreferences.setLockscreenBackground()) {
if (UserPreferences.setLockscreenBackground()) { builder.putString(MediaMetadataCompat.METADATA_KEY_ART_URI, p.getImageUri().toString());
builder.putString(MediaMetadataCompat.METADATA_KEY_ART_URI, p.getImageUri().toString()); try {
try { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Bitmap art = Glide.with(context) Display display = wm.getDefaultDisplay();
Bitmap art = Glide.with(context)
.load(p.getImageUri()) .load(p.getImageUri())
.asBitmap() .asBitmap()
.diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
.into(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) .centerCrop()
.into(display.getWidth(), display.getHeight())
.get(); .get();
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, art); builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, art);
} catch (Exception e) { } catch (Throwable tr) {
Log.e(TAG, Log.getStackTraceString(e)); Log.e(TAG, Log.getStackTraceString(tr));
}
} }
} }
mediaSession.setMetadata(builder.build()); mediaSession.setMetadata(builder.build());