TestPresenter.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.miekir.newmvp;
  2. import android.util.Log;
  3. import com.miekir.mvp.jetpack.BeanLiveData;
  4. import com.miekir.mvp.presenter.BasePresenter;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. /**
  8. * Copyright (C), 2019-2020, Miekir
  9. *
  10. * @author Miekir
  11. * @date 2020/10/6 20:53
  12. * Description:注意ViewModel的类必须是public的,否则无法创建实例
  13. */
  14. public class TestPresenter extends BasePresenter {
  15. @Override
  16. public void init() {
  17. }
  18. private Thread thread;
  19. public BeanLiveData<List<TestBean1>, Thread> go() {
  20. final BeanLiveData<List<TestBean1>, Thread> liveData = getLiveData(true);
  21. thread = new Thread(new Runnable() {
  22. @Override
  23. public void run() {
  24. try {
  25. for (int i = 0; i < 20; i++) {
  26. Thread.sleep(1000);
  27. Log.i("test", "io thread..." + i);
  28. }
  29. TestBean1 bean = new TestBean1(3, "ViewModel Jason");
  30. List<TestBean1> list = new ArrayList<>();
  31. list.add(bean);
  32. liveData.postSuccess(list);
  33. } catch (Exception e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. });
  38. liveData.setCancelableTask(thread);
  39. thread.start();
  40. return liveData;
  41. }
  42. @Override
  43. public void onTaskCancel() {
  44. super.onTaskCancel();
  45. if (thread != null) {
  46. try {
  47. thread.interrupt();
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. }
  51. }
  52. }
  53. }