小编mur*_*rkr的帖子

Exoplayer:从本地文件播放视频时循环会产生 OutOfMemoryError

当我尝试播放 中的本地文件(我假设是.mp4)中的视频时ExoPlayer 2.10.6,我得到一个OutOfMemoryError. 我从数据库下载视频firebase,然后使用Exoplayer. 和fragment存在Exoplayer两次,但我释放了Exoplayerin onPause

在这里,我初始化Exoplayer,并在运行时displayVideo调用:onResumefragment

private void displayVideo() {       
    releaseMediaPlayer();
    exoPlayer = ExoPlayerFactory.newSimpleInstance(getContext());      
    mMediaPlayerView.setPlayer(exoPlayer);
    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getContext(), com.google.android.exoplayer2.util.Util.getUserAgent(getContext(), getContext().getString(R.string.app_name)));
    MediaSource videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.fromFile(new File(getContext().getExternalFilesDir(null), profilePicVideoName)));
    exoPlayer.prepare(videoSource);
    exoPlayer.setPlayWhenReady(true);
    exoPlayer.setRepeatMode(Player.REPEAT_MODE_ONE);
    mMediaPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_ZOOM);
}
Run Code Online (Sandbox Code Playgroud)

我在这里发布Exoplayer

@Override
public void onPause() {
    super.onPause();
    releaseMediaPlayer();
}

@Override
public void onDestroy() {
    super.onDestroy();
    releaseMediaPlayer();
}

private void releaseMediaPlayer() …
Run Code Online (Sandbox Code Playgroud)

android out-of-memory firebase exoplayer2.x

7
推荐指数
1
解决办法
4081
查看次数

SpannableString 中的内存泄漏,取决于我放置 ClickableSpan 的位置

所以,....

我有这个代码(onStart):

ss = new SpannableString(getString(R.string.legal_user_acceptance_disclaimer));
ss.setSpan(clickableSpanTermsOfUse, 32, 44, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)

它泄漏了父级- Activity(这些行在里面)。

如果我只改变数字:

ss.setSpan(clickableSpanTermsOfUse, 49, 63, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)

泄漏消失。

clickableSpanTermsOfUse (memory leak is the same with a normal ClickableSpan):

clickableSpanTermsOfUse = new NoRefCopySpan() {
        @Override
        public void onClick(View textView) {
            startActivity(new Intent(ChooseLoginRegistrationActivity.this, PrivacyStatement.class));//, TermsOfUse.class));
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
        }
    };

public class NoRefCopySpan extends ClickableSpan implements NoCopySpan {
    @Override
    public void onClick(@NonNull View widget) { }

    @Override
    public void updateDrawState(TextPaint ds) …
Run Code Online (Sandbox Code Playgroud)

memory android memory-leaks spannablestring

5
推荐指数
0
解决办法
749
查看次数

android:ViewPager指示器,如修补程序图片

所以,我有一个ViewPager,我想实现一个Page-Indicator像Tinder一样简单的图片:

在此处输入图片说明

在此处输入图片说明

我以为找到图书馆会很容易,但是对于我的一生,我找不到任何图书馆。

我不在乎是否通过操纵点的宽度或使用可绘制对象来实现条形图,库唯一要做的就是拉伸条形图,以使它们始终占据100%的宽度ViewPager

任何人都知道这样的图书馆,还是在没有图书馆帮助的情况下容易实现?

android android-viewpager viewpagerindicator

1
推荐指数
1
解决办法
232
查看次数

android:活动不会开始

所以,我有一个带有几张图片的菜单和一个onClick打开新页面的方法。这适用于除一个之外的所有菜单项。那一个的编写方式与其余的完全相同,但是当单击菜单项时,会出现一个空白的新页面,标题正确,但是 - 显然 - 没有调用onCreate新活动的方法。

也没有错误消息。

启动 Activity 的代码:

public void onClick(View v) {

    Intent intent = null;
    Context context = v.getContext();

    switch(position) {
        case 0:
            intent = new Intent(context, BooksActivity.class);                     
            break;
        case 1:
            intent = new Intent(context, GamesActivity.class);
            break;
        case 2:
            intent = new Intent(context, MusicActivity.class);
            break;
        case 3:
            intent = new Intent(context, FilesActivity.class);
            break;
        case 4:
            intent = new Intent(context, VideosActivity.class);
            break;
    }
    context.startActivity(intent);            
}
Run Code Online (Sandbox Code Playgroud)

除了 FilesActivity 之外,每个活动都像魅力一样。在 FilesActivity.onCreate 方法中,我打印了一个日志:

Log.d(TAG, "initialized");
Run Code Online (Sandbox Code Playgroud)

但该日志从未显示。

知道这里发生了什么吗? …

android android-activity

0
推荐指数
1
解决办法
635
查看次数