小编Ale*_*x G的帖子

如何在 LifecycleObserver 中获取 LifecycleOwner?

我需要在 LifecycleObserver 中获取 LifecycleOwner 以将其传递给 ViewModel 观察者。

这是我的 MainActivity,我是否添加了 LifecycleObserver。

public class MainActivity extends AppCompatActivity implements LifecycleOwner{

    private LifecycleRegistry mLifecycleRegistry;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.container, MainFragment.newInstance())
                    .commitNow();
        }

        mLifecycleRegistry=new LifecycleRegistry(this);
        mLifecycleRegistry.markState(Lifecycle.State.CREATED);
        getLifecycle().addObserver(new MyLifecycleObserver());
    }


    @NonNull
    @Override
    public Lifecycle getLifecycle() {
        return mLifecycleRegistry;
    }

}
Run Code Online (Sandbox Code Playgroud)

这是我的观察者,我需要 LifecycleOwner。

public class MyLifecycleObserver implements LifecycleObserver {


    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void onStartListener(){

        FirebaseMassage.startFirebase();

        MainFragment.massageViewModel.getMassage().observe(/*here I need the LifecycleOwner*/, textMassage -> {
            FirebaseMassage.updateFirebaseMassage(textMassage);
        });

    }
}
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-architecture-components

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

在 RecyclerView 中发布 ExoPlayer

我正在 RecyclerView 中实现 ExoPlayer。但是在滚动视频时会停止,但不会停止音频。

如何在 RecyclerView 中释放 ExoPlayer?或者我怎样才能获得回收对象的位置,以便我能够释放 ExoPlayer?

这是我的数据对象

public class            enter code here           Video {
    private String url;
    private Context context;
    Boolean playWhenReady = false;
    int currentWindow = 0;
    long playbackPosition = 0;
    ExoPlayer player;

    public Video(String url, Context context) {
        this.url = url;
        this.context = context;
    }

    public void setCurrentWindow(int currentWindow) {
        this.currentWindow = currentWindow;
    }

    public void setPlaybackPosition(long playbackPosition) {
        this.playbackPosition = playbackPosition;
    }

    public void setPlayWhenReady(Boolean playWhenReady) {
        this.playWhenReady = playWhenReady;
    }

    public void setPlayer(ExoPlayer …
Run Code Online (Sandbox Code Playgroud)

android exoplayer android-recyclerview

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