简体   繁体   English

如何在我的代码中使用工作管理器 - android

[英]How can I use work manager in my code - android

This is My Code :这是我的代码:


 
    @RequiresApi(Build.VERSION_CODES.M)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.home_activity)
        

        loadProductForTheFirst()


 @RequiresApi(Build.VERSION_CODES.M)

    private fun hasNetworkAvilable(context: Context): Boolean {

        val service = Context.CONNECTIVITY_SERVICE
        val manager = context.getSystemService(service) as ConnectivityManager
        val network = manager.activeNetwork
        return (network != null)

    }


    @RequiresApi(Build.VERSION_CODES.M)

    fun loadProductForTheFirst(){


        swipeRefreshMain.isRefreshing = true
        viewModel.getalldata().observe(this, Observer {

            if (!it.isNullOrEmpty()) {


                recycler_main.apply {


                    layoutManager = GridLayoutManager(this@HomeActivity, 2)
                    adapter = RecyclerAdapterMain(it, this@HomeActivity)
                    swipeRefreshMain.isRefreshing = false

                }


            } else {

                if (hasNetworkAvilable(this)) {

                    viewModel.products.observe(this, Observer {

                        recycler_main.apply {

                            layoutManager = GridLayoutManager(this@HomeActivity, 2)
                            adapter = RecyclerAdapterMain(it, this@HomeActivity)
                            swipeRefreshMain.isRefreshing = false
                        }
                    })
                    viewModel.setup()
                } else {


                    /// in here if the user not internet for loading the products
                    /// the alert dialog displays .

                    AlertDialog.Builder(this)
                        .setTitle("Internet State")
                        .setMessage("please turn on your internet connection")
                        .create()
                        .show()

                    /// in here I want a method ( workmanager )
                    // that as soon as the internet be accessible
                    /// my product will be updated .


                }
            }
        })

    }

well , For the first time that user open my app need the internet to load product from api .好吧,用户第一次打开我的应用程序需要互联网从 api 加载产品。

So I just want the method like WorkManager to check if the intenrnet avalibility is accessible .所以我只想要像 WorkManager 这样的方法来检查是否可以访问互联网可用性。

And after that my method will be load from api .之后我的方法将从 api 加载。

I did some search but could'nt find any useful example of work with workmanager.我进行了一些搜索,但找不到任何与 workmanager 合作的有用示例。

anyone can help me with this .任何人都可以帮我解决这个问题。 ? ?

I did this code and work for me .我做了这个代码并为我工作。

I put it here if someone looking for this method .如果有人在寻找这种方法,我就把它放在这里。

I used work manager to get data from api whenever the network is on .每当网络打开时,我都使用工作管理器从 api 获取数据。

val constraints = Constriants.builder(this)
.setRequiredNetworkType(NetworkType.Connected)
val workManager : WorkManager = WorkManager.getInstance(this)

val oneRequestWork = OneRequestWorker.build(UploadWorker::class.java)
.setconstrints(constraints)
.build
workmanager.enqueue(oneRequestWork)

the Upload worker class :上传工作者类:

class UploadWorker(context : Context , param : WorkerParameters) : Worker(context , param)

  private val viewModel: ViewModelRoom by lazy {

        ViewModelProvider(
            ViewModelStore(),
            FactoryRoom(RepositoryCart(DataBaseRoom.invoke(applicationContext)))
        )
            .get(ViewModelRoom::class.java)
    }

override fun dowork() : Result {

        return try {

        viewModel.setup()



            Result.success()
        } catch (e: Exception) {

            Result.failure()

        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Android中使用我的OpenCV C ++代码? - How can I use my OpenCV C++ code in Android ? 我无法打开我的Android SDK管理器 - I can not open my Android SDK Manager 如何编写我的游戏以处理Android设备的每个分辨率? (使用Unity) - How can I code my game to work on every resolution of Android devices? (with Unity) Android 每次打开我的应用程序时都会触发工作管理器 - Android Work manager get triggered everytime I open my app (android) 我可以在我的 DiffUtill 实现中使用此代码吗? - (android) Can I use this code in my DiffUtill implementation? 如何从Android WebView获取输入的文本并在代码中使用它 - How can I get entered text from Android WebView and use it in my code Android Work Manager:我可以强制修剪已完成的作业吗? - Android Work Manager: Can I force prune the Completed Jobs? 如何使我的代码与ListView和RecyclerView一起使用 - How can I make my code to work with both listview and recyclerview 如何防止我的Android应用/服务被任务管理器“杀死”? - How can I prevent my Android app/service from being “killed” from a task manager? 如何手动将GPS数据发送到Android手机上的“位置管理器”(已root) - How can I manually send GPS data to Location Manager on my android phone(rooted)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM