sách gpt4 ăn đã đi

Hướng dẫn triển khai Hongmeng MVP+ Rxjava+Retrofit+okhttp

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 27 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết blog CFSDN này Hướng dẫn triển khai Hongmeng MVP+ Rxjava+Retrofit+okhttp được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Hướng dẫn triển khai Hongmeng MVP+ Rxjava+Retrofit+okhttp

Lời nói đầu:

Xin chào các bạn sinh viên, đã lâu tôi chưa cập nhật bài viết cho các bạn. Gần đây tôi vẫn đang tìm hiểu về sự hỗ trợ phát triển của Hongmeng và tôi muốn chuyển một số kiến ​​thức được sử dụng trong Android sang Hongmeng. ngôn ngữ này, tôi đã viết nó ngay bây giờ. Không cần phải dài dòng nữa trong hướng dẫn này, hãy bắt đầu.

##Kết xuất

Hướng dẫn triển khai Hongmeng MVP+ Rxjava+Retrofit+okhttp

Sự chuẩn bị

1. Để cài đặt môi trường phát triển Hongmeng, bạn có thể đọc bài viết trước của tôi.

Cần có thư viện của bên thứ ba

  1. //Được rồihttp3 
  2.    thực hiện 'com.squareup.okhttp3:okhttp:4.2.0' 
  3.    thực hiện "com.squareup.okhttp3:logging-interceptor:3.10.0" 
  4.    //cải tiến2 
  5.    thực hiện 'com.squareup.retrofit2:retrofit:2.9.0' 
  6.    thực hiện 'com.squareup.retrofit2:converter-gson:2.9.0' 
  7.    thực hiện 'com.squareup.retrofit2:adapter-rxjava3:2.9.0' 

Vui lòng thêm các phần phụ thuộc vào build.gradle, sau đó sử dụng sygn ngay để tải xuống các phần phụ thuộc một cách đồng bộ.

Triển khai cụ thể

Mã bố cục MainAbility.

  1. "1.0" mã hóa="utf-8"?> 
  2.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  3.     ohos:chiều cao="phù hợp với cha mẹ" 
  4.     ohos:chiều rộng="phù hợp với cha mẹ" 
  5.     ohos: định hướng="thẳng đứng"
  6.  
  7.     
  8.         Ồ, vâng:id="$+id:text_fruit_tag" 
  9.         ohos:chiều cao="35vp" 
  10.         ohos:chiều rộng="phù hợp với cha mẹ" 
  11.         ohos:phần_tử_nền="$graphic: phần tử văn bản" 
  12.         ohos:layout_alignment="bên trái" 
  13.         ohos:text="tài khoản" 
  14.         ohos:text_size="85" 
  15.         ohos:right_margin="20vp" 
  16.         ohos:left_margin="20vp" 
  17.         ohos:top_margin="25vp" 
  18.         ohos:text_color="#000000" 
  19.         /> 
  20.  
  21.     
  22.         Ồ, vâng:id="$+id:text_username" 
  23.         ohos:chiều cao="35vp" 
  24.         ohos:chiều rộng="phù hợp với cha mẹ" 
  25.         ohos:phần_tử_nền="$graphic: phần tử văn bản" 
  26.         ohos:layout_alignment="bên trái" 
  27.         ohos:text_size="50" 
  28.         ohos:right_margin="20vp" 
  29.         ohos:left_margin="20vp" 
  30.         ohos:text_color="#000000" 
  31.         ohos:top_margin="25vp" 
  32.         ohos: tầng hầm="#000099" 
  33.         ohos:gợi ý="Xin vui lòng nhập số tài khoản của bạn" 
  34.         /> 
  35.  
  36.     
  37.         Ồ, vâng:id="$+id:text_number_tag" 
  38.         ohos:chiều cao="35vp" 
  39.         ohos:chiều rộng="phù hợp với cha mẹ" 
  40.         ohos:phần_tử_nền="$graphic: phần tử văn bản" 
  41.         ohos:layout_alignment="bên trái" 
  42.         ohos:text="mật khẩu" 
  43.         ohos:text_size="85" 
  44.         ohos:right_margin="20vp" 
  45.         ohos:left_margin="20vp" 
  46.         ohos:text_color="#000000" 
  47.         ohos:top_margin="25vp" 
  48.         /> 
  49.  
  50.     
  51.         Ồ, vâng:id="$+id:text_password" 
  52.         ohos:chiều cao="35vp" 
  53.         ohos:chiều rộng="phù hợp với cha mẹ" 
  54.         ohos:phần_tử_nền="$graphic: phần tử văn bản" 
  55.         ohos:layout_alignment="bên trái" 
  56.         ohos:text_size="50" 
  57.         ohos:right_margin="20vp" 
  58.         ohos:left_margin="20vp" 
  59.         ohos:text_color="#000000" 
  60.         ohos:top_margin="25vp" 
  61.         ohos: tầng hầm="#000099" 
  62.         ohos:gợi ý="Xin vui lòng nhập mật khẩu" 
  63.         /> 
  64.     <>
  65.         Ồ, vâng:id="$+id:login_btn" 
  66.         ohos:chiều rộng="phù hợp với cha mẹ" 
  67.         ohos:chiều cao="50vp" 
  68.         ohos:text="Đăng nhập" 
  69.         ohos:phần_tử_nền="$graphic:button_element" 
  70.         ohos:text_size="50" 
  71.         ohos:text_color="#FFFFFF" 
  72.         ohos:top_margin="25vp" 
  73.         ohos:right_margin="20vp" 
  74.         ohos:left_margin="20vp" 
  75.         /> 
  76.  

Hiệu ứng bố cục

Hướng dẫn triển khai Hongmeng MVP+ Rxjava+Retrofit+okhttp

Mục đích của chúng tôi rất rõ ràng. Chúng tôi muốn lấy nội dung của hai hộp đầu vào và sau đó gọi giao diện mạng để thực hiện thao tác đăng nhập rất đơn giản.

Nhưng hôm nay chúng ta sẽ sử dụng MVP+ Rxjava+Retrofit+okhttp để đạt được điều đó.

phần cốt lõi của mạng

  • Đóng gói lớp RetrofitClient
  1. gói com.example.hmsrxjava_demo.net; 
  2. nhập java.io.IOException; 
  3.  
  4. nhập io.reactivex.rxjava3.annotations.NonNull; 
  5. nhập ohos.agp.render.render3d.BuildConfig; 
  6. nhập okhttp3.Interceptor; 
  7. nhập okhttp3.OkHttpClient; 
  8. nhập okhttp3.Request; 
  9. nhập okhttp3.Response; 
  10. nhập okhttp3.logging.HttpLoggingInterceptor; 
  11. nhập khẩu retrofit2.Retrofit; 
  12. nhập retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory; 
  13. nhập retrofit2.converter.gson.GsonConverterFactory; 
  14.  
  15. /** 
  16.  * Sự miêu tả: 
  17.  */ 
  18. công cộng lớp RetrofitClient { 
  19.  
  20.     riêng tư tĩnh thể hiện RetrofitClient dễ bay hơi; 
  21.     APIService riêng tư apiService; 
  22.     riêng tư String baseUrl = "https://www.wanandroid.com"
  23.     cải tạo riêng tư cải tạo; 
  24.     riêng tư OkHttpClient okHttpClient; 
  25.  
  26.     riêng tư RetrofitClient() { 
  27.     } 
  28.  
  29.     công cộng tĩnh RetrofitClient lấyInstance() { 
  30.         nếu (ví dụ == vô giá trị) { 
  31.             đồng bộ (RetrofitClient.class) { 
  32.                 nếu (ví dụ == vô giá trị) { 
  33.                     thể hiện = RetrofitClient mới(); 
  34.                 } 
  35.             } 
  36.         } 
  37.         trở lại ví dụ; 
  38.     } 
  39.  
  40.     /** 
  41.      * Đặt tiêu đề 
  42.      * 
  43.      * @trở lại 
  44.      */ 
  45.     riêng tư Interceptor getHeaderInterceptor() { 
  46.         trở lại Interceptor mới() { 
  47.             @Ghi đè 
  48.             công cộng Phản hồi chặn(@NonNull Chain chain) ném IOException { 
  49.                 Yêu cầu gốc = chain.request(); 
  50.                 Yêu cầu.Builder requestBuilder = original.newBuilder(); 
  51.                 //Thêm mã thông báo Nếu bạn cần thêm tiêu đề yêu cầu, bạn có thể thêm chúng ở đây. 
  52.                  // Yêu cầu.Builder requestBuilder = original.newBuilder().header("mã thông báo"""); 
  53.  
  54.                 Yêu cầu yêu cầu = requestBuilder.build(); 
  55.                 trở lại chain.proceed(yêu cầu); 
  56.             } 
  57.         }; 
  58.  
  59.     } 
  60.  
  61.     /** 
  62.      * Thiết lập thiết bị chặn và in nhật ký 
  63.      * 
  64.      * @trở lại 
  65.      */ 
  66.     riêng tư Interceptor getInterceptor() { 
  67.  
  68.         HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
  69.         //hiển thị nhật ký 
  70.         interceptor.setLevel(HttpLoggingInterceptor.Mức độ.THÂN HÌNH); 
  71.  
  72.         trở lại máy đánh chặn; 
  73.     } 
  74.  
  75.     công cộng OkHttpClient lấy OkHttpClient() { 
  76.         nếu (okHttpClient == vô giá trị) { 
  77.             // Nếu là DEBUG, hãy in nhật ký 
  78.             nếu (BuildConfig.DEBUG) { 
  79.                 okHttpClient = OkHttpClient mới().newBuilder() 
  80.                         // Đặt tiêu đề 
  81.                         .addInterceptor(getHeaderInterceptor()) 
  82.                         //Đặt bộ chặn 
  83.                         .addInterceptor(getInterceptor()) 
  84.                         .xây dựng(); 
  85.             } khác { 
  86.                 okHttpClient = OkHttpClient mới().newBuilder() 
  87.                         // Đặt tiêu đề 
  88.                         .addInterceptor(getHeaderInterceptor()) 
  89.                         .xây dựng(); 
  90.             } 
  91.         } 
  92.         trở lại okHttpClient; 
  93.     } 
  94.     công cộng Dịch vụ API lấy Api() { 
  95.         // Khởi tạo một máy khách, nếu không thì retrofit sẽ thêm một máy khách theo mặc định 
  96.         nếu (cải tiến == vô giá trị) { 
  97.             retrofit = new Retrofit.Builder() 
  98.                     // Đặt địa chỉ Url của yêu cầu mạng 
  99.                     .baseUrl(baseUrl) 
  100.                     //Đặt trình phân tích dữ liệu 
  101.                     .addConverterFactory(GsonConverterFactory.tạo nên()) 
  102.                     // Đặt bộ điều hợp yêu cầu mạng để hỗ trợ RxJava và RxAndroid 
  103.                     .addCallAdapterFactory(RxJava3CallAdapterFactory.tạo nên()) 
  104.                     .client(getOkHttpClient()) 
  105.                     .xây dựng(); 
  106.         } 
  107.         // Tạo - giao diện yêu cầu mạng - phiên bản 
  108.         nếu (apiService==vô giá trị){ 
  109.             apiService = cải tiến.tạo nên(Lớp APIService); 
  110.         } 
  111.         trở lại dịch vụ api; 
  112.     } 

Chúng tôi đã viết một singleton để có được các khả năng của RetrofitClient và đặt trình xử lý tiêu đề yêu cầu cũng như đặt trình chặn nhật ký OKHTTP.

Sau đó, phương thức getApi được xác định để lấy phiên bản APIService.

  • RxScheduler

Lập kế hoạch luồng RXjava.

  1. gói com.example.hmsrxjava_demo.net; 
  2.  
  3. nhập com.example.hmsrxjava_demo.HarmonySchedulers; 
  4. nhập org.reactivestreams.Publisher; 
  5. nhập io.reactivex.rxjava3.core.Flowable; 
  6. nhập io.reactivex.rxjava3.core.FlowableTransformer; 
  7. nhập io.reactivex.rxjava3.core.Observable; 
  8. nhập io.reactivex.rxjava3.core.ObservableSource; 
  9. nhập io.reactivex.rxjava3.core.ObservableTransformer; 
  10. nhập io.reactivex.rxjava3.schedulers.Schedulers; 
  11. /** 
  12.  * mô tả: Lập kế hoạch luồng RXjava 
  13.  */ 
  14. công cộng lớp RxScheduler { 
  15.     /** 
  16.      * Xử lý luồng thống nhất 
  17.      * 
  18.      * @param Loại chung được chỉ định 
  19.      * @trở lại Máy biến áp chảy 
  20.      */ 
  21.     công cộng tĩnh  Biến đổi lưu lượng< T, T> Flo_io_main() { 
  22.         trở lại FlowableTransformer() mới { 
  23.             @Ghi đè 
  24.             công cộng Nhà xuất bản áp dụng(Flowable ngược dòng) { 
  25.                 trở lại upstream.subscribeOn(Schedulers.io()) 
  26.                         .observeOn(HarmonySchedulers.mainThread()); 
  27.             } 
  28.         }; 
  29.     } 
  30.  
  31. /* * 
  32.      * Xử lý luồng thống nhất 
  33.      * 
  34.      * @param Loại chung được chỉ định 
  35.      * @trở lại Biến đổi quan sát được*/ 
  36.     công cộng tĩnh  ObservableTransformer Obs_io_main() { 
  37.         trở lại ObservableTransformer() mới { 
  38.             @Ghi đè 
  39.             công cộng ObservableSource áp dụng( Observable ngược dòng) { 
  40.                 trở lại upstream.subscribeOn(Schedulers.io()) 
  41.                         .observeOn(HarmonySchedulers.mainThread()); 
  42.             } 
  43.         }; 
  44.     } 

Mã ở đây đề cập đến HarmonySchedulers.mainThread(), không có sẵn trong Android và do chính tôi triển khai trong Android.

  • Dịch vụ API

Lớp giao diện xử lý các yêu cầu mạng Tất cả các yêu cầu mạng đều được viết bằng APIService. Phương pháp viết tương tự như Retrofitle của Android.

  1. gói com.example.hmsrxjava_demo.net; 
  2. nhập com.example.hmsrxjava_demo.bean.BaseObjectBean; 
  3. nhập com.example.hmsrxjava_demo.bean.LoginBean; 
  4. nhập io.reactivex.rxjava3.core.Observable; 
  5. nhập retrofit2.http.Field; 
  6. nhập retrofit2.http.FormUrlEncoded; 
  7. nhập retrofit2.http.POST; 
  8. /** 
  9.  * Sự miêu tả: 
  10.  */ 
  11. công cộng giao diện APIService { 
  12.  
  13.     /** 
  14.      * Đăng nhập 
  15.      * 
  16.      * Tài khoản tên người dùng @param 
  17.      * @tham số mật khẩu mật khẩu 
  18.      * @trở lại 
  19.      */ 
  20.     @FormUrlEncoded 
  21.     @BƯU KIỆN("người dùng/đăng nhập"
  22.     Observable<>> đăng nhập(@Field("tên người dùng") Chuỗi tên người dùng, 
  23.                                                 @Cánh đồng("mật khẩu") Sợi dây mật khẩu); 
  24.  

lớp cơ sở

  • Khả năng cơ bản
  1. gói com.example.hmsrxjava_demo.base; 
  2. nhập ohos.aafwk.ability.Ability; 
  3. nhập ohos.aafwk.content.Intent; 
  4.  
  5. công cộng lớp trừu tượng BaseAbility mở rộng Ability { 
  6.  
  7.     @Ghi đè 
  8.     được bảo vệ void onStart(Ý định ý định) { 
  9.         super.onStart(ý định); 
  10.         super.setUIContent(getLayoutId()); 
  11.         initView(); 
  12.     } 
  13.  
  14.  
  15.     @Ghi đè 
  16.     được bảo vệ void onStop() { 
  17.         super.onStop(); 
  18.     } 
  19.  
  20.  
  21.     /** 
  22.      * Đặt bố cục 
  23.      * 
  24.      * @trở lại 
  25.      */ 
  26.     công cộng tóm tắt số nguyên lấyIdLayout(); 
  27.  
  28.     /** 
  29.      * Khởi tạo chế độ xem 
  30.      */ 
  31.     công cộng trừu tượng void initView(); 
  • Khả năng cơ bảnMvp
  1. gói com.example.hmsrxjava_demo.base; 
  2. nhập ohos.aafwk.content.Intent; 
  3. công cộng lớp trừu tượng BaseMvpAbility mở rộng BaseAbility triển khai BaseView { 
  4.     được bảo vệ T mPresenter; 
  5.     @Ghi đè 
  6.     được bảo vệ void onStart(Ý định ý định) { 
  7.         super.onStart(ý định); 
  8.     } 
  9.     @Ghi đè 
  10.     được bảo vệ void onStop() { 
  11.         nếu (mPresenter != vô giá trị) { 
  12.             mPresenter.detachView(); 
  13.         } 
  14.         super.onStop(); 
  15.     } 
  • BasePresenter
  1. gói com.example.hmsrxjava_demo.base; 
  2. /** 
  3.  * Sự miêu tả: 
  4.  */ 
  5. công cộng lớp BasePresenter
  6.     được bảo vệ V mView; 
  7.  
  8.  
  9.     /** 
  10.      * ràng buộcxem, phương thức này thường được gọi trong quá trình khởi tạo 
  11.      * 
  12.      * @tham số xem xem 
  13.      */ 
  14.     công cộng void attachView(V xem) { 
  15.         này.mView = xem
  16.     } 
  17.  
  18.     /** 
  19.      * Hủy liên kếtxem, thường được gọi trong onDestroy 
  20.      */ 
  21.  
  22.     công cộng void tách View() { 
  23.         này.mView = vô giá trị
  24.     } 
  25.  
  26.     /** 
  27.      * XemCó nên ràng buộc không 
  28.      * 
  29.      * @trở lại 
  30.      */ 
  31.     công cộng boolean isViewAttached() { 
  32.         trở lại mXem != vô giá trị
  33.     } 
  • Chế độ xem cơ sở 。

  1. gói com.example.hmsrxjava_demo.base; 
  2.  
  3. /** 
  4.  * Sự miêu tả: 
  5.  */ 
  6. công cộng giao diện BaseView { 
  7.  
  8.     /** 
  9.      * Hiển thị tải 
  10.      */ 
  11.     void showLoading(); 
  12.  
  13.     /** 
  14.      * Tải ẩn 
  15.      */ 
  16.     hàm ẩn hideLoading(); 
  17.  
  18.     /** 
  19.      * Thu thập dữ liệu không thành công 
  20.      * @param errMessage 
  21.      */ 
  22.     void onError(Chuỗi errMessage); 
  • Lớp mô hình
  1. gói com.example.hmsrxjava_demo.contract; 
  2. nhập com.example.hmsrxjava_demo.base.BaseView; 
  3. nhập com.example.hmsrxjava_demo.bean.BaseObjectBean; 
  4. nhập com.example.hmsrxjava_demo.bean.LoginBean; 
  5. nhập io.reactivex.rxjava3.core.Observable; 
  6.  
  7. /** 
  8.  * Sự miêu tả: 
  9.  */ 
  10. công cộng giao diện MainContract { 
  11.     Giao diện Mô hình { 
  12.         Observable<>> login(String tên người dùng, String mật khẩu); 
  13.     } 
  14.  
  15.     giao diện Xem mở rộng BaseView { 
  16.         @Ghi đè 
  17.         void showLoading(); 
  18.  
  19.         @Ghi đè 
  20.         hàm ẩn hideLoading(); 
  21.  
  22.         @Ghi đè 
  23.         void onError(Chuỗi errMessage); 
  24.  
  25.         void onSuccess(BaseObjectBean bean); 
  26.     } 
  27.  
  28.     giao diện Presenter { 
  29.         /** 
  30.          * Đăng nhập 
  31.          * 
  32.          * @param tên người dùng 
  33.          * @tham số mật khẩu 
  34.          */ 
  35.         void login(String tên người dùng, String mật khẩu); 
  36.     } 
  • ##lớp triển khai mô hình
  1. gói com.example.hmsrxjava_demo.model; 
  2. nhập com.example.hmsrxjava_demo.bean.BaseObjectBean; 
  3. nhập com.example.hmsrxjava_demo.bean.LoginBean; 
  4. nhập com.example.hmsrxjava_demo.contract.MainContract; 
  5. nhập com.example.hmsrxjava_demo.net.RetrofitClient; 
  6. nhập io.reactivex.rxjava3.core.Observable; 
  7.  
  8. /** 
  9.  * Sự miêu tả: 
  10.  */ 
  11. công cộng lớp MainModel triển khai MainContract.Model { 
  12.     riêng tư tĩnh Chuỗi cuối cùng TAG = "Mô hình chính"
  13.     @Ghi đè 
  14.     công cộng Observable<>> login(String tên người dùng, String mật khẩu) { 
  15.         Hệ thống.ngoài.println("Đăng nhập MainModel đã được gọi"); 
  16.         trở lại RetrofitClient.getInstance().getApi().login(tên người dùng,mật khẩu); 
  17.     } 
  • Lớp người trình bày

  1. gói com.example.hmsrxjava_demo.presenter; 
  2. nhập com.example.hmsrxjava_demo.base.BasePresenter; 
  3. nhập com.example.hmsrxjava_demo.bean.BaseObjectBean; 
  4. nhập com.example.hmsrxjava_demo.bean.LoginBean; 
  5. nhập com.example.hmsrxjava_demo.contract.MainContract; 
  6. nhập com.example.hmsrxjava_demo.model.MainModel; 
  7. nhập com.example.hmsrxjava_demo.net.RxScheduler; 
  8. nhập io.reactivex.rxjava3.annotations.NonNull; 
  9. nhập io.reactivex.rxjava3.core.Observer; 
  10. nhập io.reactivex.rxjava3.disposables.Disposable; 
  11. /** 
  12.  * Sự miêu tả: 
  13.  */ 
  14. công cộng lớp MainPresenter mở rộng BasePresenter<>Xem> triển khai MainContract.Presenter { 
  15.     mô hình MainContract.Model riêng tư; 
  16.     công cộng Người trình bày chính() { 
  17.         mô hình = new MainModel(); 
  18.     } 
  19.     @Ghi đè 
  20.     công cộng void login(String tên người dùng, String mật khẩu) { 
  21.         //XemCó liên kết hay không. Nếu không bị ràng buộc, yêu cầu mạng sẽ không được thực thi. 
  22.         nếu (!isViewAttached()) { 
  23.             trở lại
  24.         } 
  25.         model.login(tên người dùng, mật khẩu
  26.                 .compose(RxScheduler.Obs_io_main()) 
  27.                 .subscribe(Người quan sát mới<>>() { 
  28.                     @Ghi đè 
  29.                     công cộng void onSubscribe(@NonNull Dùng một lần d) { 
  30.                         mView.showLoading(); 
  31.                     } 
  32.  
  33.                     @Ghi đè 
  34.                     công cộng void onNext(@NonNull BaseObjectBean loginBeanBaseObjectBean) { 
  35.                         mView.onSuccess(loginBeanBaseObjectBean); 
  36.                         Hệ thống.ngoài.println("onNext ----- >"); 
  37.                     } 
  38.  
  39.                     @Ghi đè 
  40.                     công cộng void onError(@NonNull Throwable e) { 
  41.                         mView.onError(e.getMessage()); 
  42.                         mView. hideLoading(); 
  43.                     } 
  44.                     @Ghi đè 
  45.                     công cộng void khi hoàn thành() { 
  46.                         mView. hideLoading(); 
  47.                     } 
  48.            }); 
  49.  
  50.     } 
  • Được gọi cụ thể trong MainAbility.

  1. gói com.example.hmsrxjava_demo; 
  2. nhập com.example.hmsrxjava_demo.base.BaseMvpAbility; 
  3. nhập com.example.hmsrxjava_demo.bean.BaseObjectBean; 
  4. nhập com.example.hmsrxjava_demo.bean.LoginBean; 
  5. nhập com.example.hmsrxjava_demo.contract.MainContract; 
  6. nhập com.example.hmsrxjava_demo.presenter.MainPresenter; 
  7. nhập ohos.agp.components.Button; 
  8. nhập ohos.agp.components.Component; 
  9. nhập ohos.agp.components.TextField; 
  10. nhập ohos.agp.window.dialog.ToastDialog; 
  11.  
  12.  
  13. công cộng lớp MainAbility mở rộng BaseMvpAbility triển khai MainContract.Xem { 
  14.     văn bản TextField riêng tưTên người dùng, textpasswrod; 
  15.     Chuỗi tên người dùng riêng tư, mật khẩu
  16.     Nút riêng tư loginBtn; 
  17.     người thuyết trình MainPresenter riêng tư; 
  18.     @Ghi đè 
  19.     công cộng số nguyên lấy LayoutId() { 
  20.         trở lại ResourceTable.Layout_ability_main; 
  21.     } 
  22.     @Ghi đè 
  23.     công cộng void initView() { 
  24.         textUsername= (Trường văn bản) findComponentById(ResourceTable.Id_text_username); 
  25.         textpasswrod= (TextField) findComponentById(ResourceTable.Id_text_password); 
  26.         người thuyết trình=new MainPresenter(); 
  27.         presenter.attachView(cái này); 
  28.         loginBtn= (Nút) findComponentById(ResourceTable.Id_login_btn); 
  29.         nếu(loginBtn!=vô giá trị){ 
  30.             loginBtn.setClickedListener(Thành phần mới.ClickedListener() { 
  31.                 @Ghi đè 
  32.                 công cộng void onClick(Thành phần thành phần) { 
  33.                     Hệ thống.ngoài.println("Nhấp vào nút đăng nhập"); 
  34.                     tên người dùng=văn bảnTên người dùng.getText(); 
  35.                     mật khẩu=textpasswrod.getText(); 
  36.                     nếu(tên người dùng!=vô giá trị&&mật khẩu!=vô giá trị){ 
  37.                         presenter.login(tên người dùng,mật khẩu); 
  38.                         // đăng nhập(tên người dùng,mật khẩu); 
  39.                     }khác { 
  40.                         mới ToastDialog(MainAbility.this).setText("Mật khẩu tài khoản không thể để trống nếu bạn không nhập").trình diễn(); } 
  41.                 } 
  42.             }); 
  43.         } 
  44.     } 
  45.     @Ghi đè 
  46.     công cộng void onSuccess(BaseObjectBean đậu) { 
  47.         Hệ thống.ngoài.println(bean.getErrorCode()+bean.getErrorMsg()); 
  48.         mới ToastDialog(MainAbility.this).setText(bean.getErrorCode()+bean.getErrorMsg()).show(); 
  49.     } 
  50.     @Ghi đè 
  51.     công cộng void showLoading() { 
  52.     } 
  53.     @Ghi đè 
  54.     công cộng void hideLoading() { 
  55.  
  56.     } 
  57.     @Ghi đè 
  58.     công cộng void onError(Chuỗi errMessage) { 
  59.     } 

Tại thời điểm này, hướng dẫn triển khai Hongmeng MVP+ Rxjava+Retrofit+okhttp rất giống với cách sử dụng Android. Nhiều mã ở đây được sao chép. Học sinh có thể tải xuống mã hoàn chỉnh để dùng thử.

Tóm tắt cuối cùng:

MVP+ Rxjava+Retrofit+okhttp trong Hongmeng về cơ bản giống như trong Android, nhưng có một số điều hơi ngạc nhiên. Nếu học viên chưa quen với Rxjava+Retrofit+okhttp, trước tiên hãy xem phần hướng dẫn chính thức. chưa quen với chế độ MVP, vui lòng đọc cho tôi các bài viết trước.

Link gốc: https://harmonyos.51cto.com.

Cuối cùng, bài viết này về hướng dẫn triển khai Hongmeng MVP+ Rxjava+Retrofit+okhttp kết thúc tại đây. Nếu bạn muốn biết thêm về hướng dẫn triển khai Hongmeng MVP+ Rxjava+Retrofit+okhttp, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. tất cả sẽ ủng hộ blog của tôi trong tương lai! .

27 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress