当我尝试播放 中的本地文件(我假设是.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) 所以,....
我有这个代码(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) 所以,我有一个ViewPager,我想实现一个Page-Indicator像Tinder一样简单的图片:
我以为找到图书馆会很容易,但是对于我的一生,我找不到任何图书馆。
我不在乎是否通过操纵点的宽度或使用可绘制对象来实现条形图,库唯一要做的就是拉伸条形图,以使它们始终占据100%的宽度ViewPager。
任何人都知道这样的图书馆,还是在没有图书馆帮助的情况下容易实现?
所以,我有一个带有几张图片的菜单和一个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)
但该日志从未显示。
知道这里发生了什么吗? …