瀏覽代碼

耗时任务尚未实现自动取消

詹子聪 5 年之前
父節點
當前提交
78fbfa5e2e

+ 5 - 1
app/build.gradle

@@ -63,7 +63,10 @@ dependencies {
     implementation project(path: ':common')
     implementation project(path: ':mvp')
     implementation "androidx.core:core-ktx:+"
+
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+    //kotlin 协程
+    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:${versions.ktxCoroutines}"
 
 //    compile 'org.aspectj:aspectjrt:1.8.+'
     // 动态权限申请firefly1126/android_permission_aspectjx
@@ -75,4 +78,5 @@ repositories {
 
 //aspectjx {
 //    exclude  "android.support",'androidx','com.google','com.squareup.leakcanary','com.squareup.leakcanary.core','com.alipay','org.apache','com.tencent'
-//}
+//}
+

+ 3 - 2
app/src/main/java/com/miekir/newmvp/ui/home/HomeActivity.java

@@ -43,7 +43,8 @@ public class HomeActivity extends BaseMvpActivity implements View.OnClickListene
             case R.id.btn_task:
                 // 点击之后,后台执行耗时操作
                 //mArticlePresenter.fetchArticleData();
-                mSimplePresenter.doWork();
+                //mSimplePresenter.doWork();
+                mAutoPresenter.doWorkNew();
                 break;
             default:
                 break;
@@ -57,6 +58,6 @@ public class HomeActivity extends BaseMvpActivity implements View.OnClickListene
 
     @Override
     public void onArticleResult(String result) {
-        Log.d(getClass().getName(), "main obj is " + this.toString());
+        Log.d(getClass().getName(), "main result is " + result);
     }
 }

+ 6 - 32
app/src/main/java/com/miekir/newmvp/ui/home/article/presenter/AutoPresenter.kt

@@ -3,48 +3,22 @@ package com.miekir.newmvp.ui.home.article.presenter
 import com.miekir.common.utils.LogTool
 import com.miekir.mvp.presenter.BasePresenterKt
 import com.miekir.newmvp.ui.home.IArticleView
-import com.rxjava.rxlife.life
-import io.reactivex.Observable
-import io.reactivex.ObservableEmitter
-import io.reactivex.ObservableOnSubscribe
-import io.reactivex.schedulers.Schedulers
+import kotlinx.coroutines.delay
 
 class AutoPresenter<V : IArticleView> : BasePresenterKt<V>() {
-
-    fun doWorkOld() {
-        //showProgress();
-        val disposable = Observable.create(ObservableOnSubscribe { emitter: ObservableEmitter<String?> ->
-            try {
-                Thread.sleep(5000)
-            } catch (e: Exception) {
-                e.printStackTrace()
-            }
-            emitter.onNext("")
-            emitter.onComplete()
-        } as ObservableOnSubscribe<String?>)
-        .subscribeOn(Schedulers.io())
-        .life(this)
-        .subscribe({ next: String? ->
-            LogTool.d("MainPresenter", "onNext thread is: " + Thread.currentThread().name)
-            view?.onArticleResult("result from kotlin")
-            //post(Consumer<IArticleView> { view: IArticleView -> view.onArticleResult("result") })
-        }) { error: Throwable ->
-            hideProgress()
-            LogTool.d(javaClass.name, error.message)
-        }
-
-        mBackDisposableList.add(disposable)
-    }
-
     fun doWorkNew() {
         val job = launchProgressTask({
+            delay(10000)
             //协程体
+            LogTool.d("success")
+            view?.onArticleResult("success")
         }, {
             //异常回调
+            LogTool.d("exception")
         })
     }
 
     override fun onInit() {
-
+        LogTool.d("init")
     }
 }

+ 3 - 1
build.gradle

@@ -1,7 +1,8 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
-    ext.kotlin_version = '1.4.21'
+    // 这个版本必须和IDE的插件版本一致
+    ext.kotlin_version = '1.4.20'
     repositories {
         google()
         jcenter()
@@ -34,3 +35,4 @@ ext.versions = [
         targetSdk           : 29,
         buildTools          : '29.0.2',
 ]
+

+ 4 - 3
mvp/build.gradle

@@ -1,5 +1,6 @@
 apply plugin: 'com.android.library'
-
+// 使用到kotlin的module必须增加下面这个,否则报 Unresolved reference
+apply plugin: 'kotlin-android'
 
 android {
     compileSdkVersion versions.compileSdk
@@ -38,8 +39,8 @@ dependencies {
 
     def lifecycle_version = "2.2.0"
     //implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
-    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
-    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
+    api "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
+    api 'androidx.lifecycle:lifecycle-extensions:2.2.0'
 
     //def activity_version = "1.1.0"
     def activity_version = "1.2.0-beta01"

+ 1 - 1
mvp/src/main/java/com/miekir/mvp/view/ViewHelper.java

@@ -38,7 +38,7 @@ public class ViewHelper {
                 field.setAccessible(true);
                 // 父类引用指向子类对象
                 Class<? extends BasePresenter<?>> type = (Class<? extends BasePresenter<?>>) field.getType();
-                //BasePresenter<V> presenter = type.newInstance();
+                //BasePresenter presenter = type.newInstance();
                 BasePresenter presenter = new ViewModelProvider(owner).get(type);
                 field.set(iView, presenter);
                 presenter.attachView(iView);