簡體   English   中英

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

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

這是我的代碼:


 
    @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 .


                }
            }
        })

    }

好吧,用戶第一次打開我的應用程序需要互聯網從 api 加載產品。

所以我只想要像 WorkManager 這樣的方法來檢查是否可以訪問互聯網可用性。

之后我的方法將從 api 加載。

我進行了一些搜索,但找不到任何與 workmanager 合作的有用示例。

任何人都可以幫我解決這個問題。 ?

我做了這個代碼並為我工作。

如果有人在尋找這種方法,我就把它放在這里。

每當網絡打開時,我都使用工作管理器從 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)

上傳工作者類:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM