【问题标题】:How would you use AsyncTasks in a Utils/Helper class您将如何在 Utils/Helper 类中使用 AsyncTasks
【发布时间】:2021-06-20 05:33:33
【问题描述】:

您好,我最近才开始使用 Room DataBase,我正在观看的课程建议使用 Utils/helper 类进行所有数据库操作,但我从未被教导如何将所有 utils 静态方法正确转换为 Asynctasks在房间数据库中使用,所以我想知道是否有人对如何实现这一点有建议。干杯

(下面是我正在使用的 Utils 和 mainFragment

The Utils class

package maddo.com.aquariumfish.MainFragment;

import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.material.bottomnavigation.BottomNavigationView;

import java.util.ArrayList;

import maddo.com.aquariumfish.Adaptors.FishAdaptor;
import maddo.com.aquariumfish.Daos.FishDao;
import maddo.com.aquariumfish.DataBases.FishDataBase;
import maddo.com.aquariumfish.FavouriteFishActivity;
import maddo.com.aquariumfish.Models.Fish;
import maddo.com.aquariumfish.R;
import maddo.com.aquariumfish.SearchActivity;
import maddo.com.aquariumfish.Utils;

public class MainFragment extends Fragment {

    private RecyclerView MainRecView;

    private FishAdaptor fishAdaptor;




    private BottomNavigationView bottomNavigationView;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.frangment_main,container,false);

        initView(view);
        initBottomNavView();
        initRecView();

        return view;
    }



    @Override
    public void onResume() {
        super.onResume();
        initRecView();
    }

    private void initRecView(){
        fishAdaptor = new FishAdaptor(getActivity());
        MainRecView.setAdapter(fishAdaptor);
        MainRecView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
        ArrayList<Fish> fish = Utils.getAllFish(getActivity());
        if(null!= fish){
            fishAdaptor.setFish(fish);
        }



    }

    private void initBottomNavView() {

        bottomNavigationView.setSelectedItemId(R.id.bottomHome);

        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.bottomHome:
                        break;
                    case R.id.bottomFavFish:
                        Intent FavIntent = new Intent(getActivity(), FavouriteFishActivity.class);
                        FavIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(FavIntent);
                        break;
                    case R.id.search:
                        Intent SearchIntent = new Intent(getActivity(), SearchActivity.class);
                        SearchIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(SearchIntent);
                        break;
                    default:
                        break;
                }
                return false;
            }
        });


    }
    private void initView(View view) {
        MainRecView = view.findViewById(R.id.mainRecView);
         bottomNavigationView =view.findViewById(R.id.MainbottomNavView);

    }
}

【问题讨论】:

    标签: android android-studio android-asynctask android-room helper


    【解决方案1】:

    也许您不想将每个方法转换为 AsyncTask,如果这就是您所说的。 AsyncTask 是一个并发框架,它允许您在自己的专用线程上调用 Utils 类。

    如果我们想让事情尽可能简单,只需创建一个 AsyncTask 类并调用您的 Utils 方法即可。您的 Utils 方法将使用的上下文将由 AsyncTask 提供。

    【讨论】:

      【解决方案2】:

      我会建议使用协程,而不是使用 AsyncTask。它比 AsyncTask 非常简单高效。

      【讨论】:

        猜你喜欢
        • 2019-10-03
        • 2021-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-08
        • 2020-05-03
        • 1970-01-01
        相关资源
        最近更新 更多