台达PLC解密次数限制

您所在的位置:网站首页 plc的解密软件是怎么来的 台达PLC解密次数限制

台达PLC解密次数限制

2023-07-03 23:54| 来源: 网络整理| 查看: 265

台达PLC解密次数限制【专业】【信誉】【18230062509】这一块本来想写下首页来着,但是想了想东西太多了,所以挑选了一个不需要联网的一个页面——浏览历史,这一个页面既继承了 BaseActivity,又有无内容、加载中、有内容等状态的切换,所以比较合适。 先来看一下页面的布局吧:

复制代码 布局需要注意的是要把 layout_lce 写进去,layout_lce 就是咱们刚才编写的状态的布局,TitleBar 是我自定义的一个头布局,可设置标题、左边按钮、右边按钮,按钮的点击事件、图片或者问题都可以直接进行设置,大家可以进入 Github 中自行下载进行使用。 由于这个页面横竖屏无需做处理,所以只写一个页面即可。 布局写完了,下面就可以开始正式使用 BaseActivity 了: class BrowseHistoryActivity : ArticleCollectBaseActivity() { private lateinit var articleAdapter: ArticleAdapter private var page = 1 override fun getLayoutId(): Int { return R.layout.activity_browse_history } override fun initView() { historyRecycleView.layoutManager = LinearLayoutManager(this) articleAdapter = ArticleAdapter( this, R.layout.adapter_article, // viewModel.articleList, //数据源 false ) articleAdapter.setHasStableIds(true) historyRecycleView.adapter = articleAdapter historySmartRefreshLayout.apply { setOnRefreshListener { reLayout -> reLayout.finishRefresh(measureTimeMillis { page = 1 // getArticleList() //加载数据 }.toInt()) } setOnLoadMoreListener { reLayout -> val time = measureTimeMillis { page++ // getArticleList() //加载数据 }.toInt() reLayout.finishLoadMore(if (time > 1000) time else 1000) } } } override fun initData() { // getArticleList() //加载数据 } companion object { fun actionStart(context: Context) { val intent = Intent(context, BrowseHistoryActivity::class.java) context.startActivity(intent) } }

} 复制代码 上面的代码就是使用BaseActivity,大家也可以看到,和正常使用 Activity 基本一致,只不过更加简洁了而已,最下面的伴生方法是给了其他类跳转到当前类的一个入口,这里看不出优势,但如果需要传其他参数的话效果就很好了,可以有效避免传错参数。 上面类还有一些内容没写完,剩下的是 MVVM 的内容,在下一个模块说。 第三步——使用MVVM 相信看过我之前两篇文章的老司机们已经会使用了,再来回顾一下吧! VM 之前也说过,不是 ViewModel 但也是,不懂的可以去看下之前的文章。来看下 ViewModel 吧: class BrowseHistoryViewModel(application: Application) : AndroidViewModel(application) {

private val pageLiveData = MutableLiveData() val articleList = ArrayList() val articleLiveData = Transformations.switchMap(pageLiveData) { page -> BrowseHistoryRepository(application).getBrowseHistory(page) } fun getArticleList(page: Int) { pageLiveData.value = page }

} 复制代码 是不是很简单,ViewModel + LiveData,就是这样,很简单是不是! 这里需要注意下使用到了 AndroidViewModel 。咱们平时使用的都是 ViewModel,有时候为了获取 Context 还需要单独传下参数,而 ViewModel 传参数又很麻烦,还需要使用 Factory 来传递,这种情况就可以使用 AndroidViewModel 了,可以直接继承进行使用,用的时候和之前一样就可以: private val viewModel by lazy { ViewModelProvider(this).get(BrowseHistoryViewModel::class.java) } 复制代码 是不是又 Get 到一个知识点,快记下来! 刚才的代码中在获取数据的地方都注释了,现在来看下吧! private fun getArticleList() { if (viewModel.articleList.size

private val browseHistoryDao = PlayDatabase.getDatabase(context).browseHistoryDao() /** * 获取历史记录列表 */ fun getBrowseHistory(page: Int) = fire { val projectClassifyLists = browseHistoryDao.getHistoryArticleList((page - 1) * 20,HISTORY) if (projectClassifyLists.isNotEmpty()) { Result.success(projectClassifyLists) } else { Result.failure(RuntimeException("response status is ")) } }

} 复制代码 到这里就很清晰了,Activity 用来展示页面,Repository 用来获取数据,ViewModel 用来处理数据和暂时保存数据以供 Activity 使用。 数据库肯定使用的是 Room ,这里要提一下,没用过 Room 的一定要使用下,如果你使用的是 Kotlin 的话更要使用了,Room 搭配上协程后简直不要太香!像上面的代码一样一行代码直接出结果,也无需进行线程的切换,因为这本来就是协程的擅长之处嘛! 总结 本来想写的东西很多,但是下笔却不知道如何进行描述,也怪自己,之前每个月能写几篇文章锻炼一下,现在一个月也就写一篇左右,是自己太懒了,忙不是借口,就是懒。。。 这一篇文章只是一个概览,是这个系列的第一篇文章,告诉大家一些看着神秘的东西到底是啥,该怎样使用,下一篇文章带大家看一看项目的首页是怎样一步一步搭建起来的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3