重新认识container

我还清楚的记得,第一次从李老师那儿听说container这个词 ,结果他给我解释了半天还是似懂非懂的。

今天,偷闲翻了下POSA4, 发现里面对container的解释特别清楚。 粗略的理解下来是,为了分离关注点,而实现的对系统资源的封装。

豁然开朗的发现,os就是应用程序的container。

突然非常想了解OS,现在的组件化到底做成了什么样子,不过听过2000开始,windows就是基于com的了。不过用过一些windows的定制工具如xplite, 看见组件化程度还是很好的。

突发奇想的,开发一个os, 作为container, 如果对系统资源和异构平台封装的足够好,有支持一个非常好的可扩展的框架的话,以后就不会有应用程序的概念存在了,所有的都是一些服务,服务之间可以通过orchestration集成。其实,unix通过script 来粘合程序完成任务已经有些这样的味道了。不过组件的通信方式不够友好,管道虽然很强大,但是对异构平台,并发,安全支持都不是很好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于在这里无法提供完整的代码,我提供一些关键的部分来帮助你实现这个背单词app。 首先,你需要从API获取单词列表。你可以使用 Retrofit 和 Gson 库来实现这个功能。以下是一个获取单词列表的示例代码: ```kotlin interface ApiService { @GET("words") suspend fun getWords(): List<Word> } data class Word(val word: String, val meaning: String) ``` 然后,创建一个单词列表页面,使用 RecyclerView 显示单词列表。在 RecyclerView.Adapter 中,你需要实现“认识”按钮、 “不认识”按钮和“加入生词本”按钮的点击事件。以下是一个示例代码: ```kotlin class WordListAdapter(private val words: List<Word>) : RecyclerView.Adapter<WordViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WordViewHolder { val itemView = LayoutInflater.from(parent.context).inflate(R.layout.item_word, parent, false) return WordViewHolder(itemView) } override fun onBindViewHolder(holder: WordViewHolder, position: Int) { val word = words[position] holder.bind(word) holder.itemView.knowButton.setOnClickListener { // 处理“认识”按钮点击事件 } holder.itemView.unfamiliarButton.setOnClickListener { // 处理“不认识”按钮点击事件 } holder.itemView.addToVocabularyButton.setOnClickListener { // 处理“加入生词本”按钮点击事件 } } override fun getItemCount() = words.size } class WordViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bind(word: Word) { itemView.wordTextView.text = word.word } } ``` 接下来,创建一个生词本页面和一个已背单词列表页面,同样使用 RecyclerView 显示生词列表和已背单词列表。在 RecyclerView.Adapter 中,你需要实现删除单词的功能。以下是一个示例代码: ```kotlin class VocabularyAdapter(private val words: List<Word>) : RecyclerView.Adapter<WordViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WordViewHolder { val itemView = LayoutInflater.from(parent.context).inflate(R.layout.item_word, parent, false) return WordViewHolder(itemView) } override fun onBindViewHolder(holder: WordViewHolder, position: Int) { val word = words[position] holder.bind(word) holder.itemView.deleteButton.setOnClickListener { val newList = words.toMutableList().apply { removeAt(position) } notifyItemRemoved(position) } } override fun getItemCount() = words.size } ``` 最后,你需要在 app 中创建一个 BottomNavigationView,用于切换单词列表页面、生词本页面和已背单词列表页面。以下是一个示例代码: ```kotlin class MainActivity : AppCompatActivity() { private lateinit var navView: BottomNavigationView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) navView = findViewById(R.id.nav_view) navView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener) switchFragment(WordListFragment()) } private val onNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> when (item.itemId) { R.id.navigation_word_list -> { switchFragment(WordListFragment()) return@OnNavigationItemSelectedListener true } R.id.navigation_vocabulary -> { switchFragment(VocabularyFragment()) return@OnNavigationItemSelectedListener true } R.id.navigation_learned -> { switchFragment(LearnedFragment()) return@OnNavigationItemSelectedListener true } } false } private fun switchFragment(fragment: Fragment) { supportFragmentManager.beginTransaction() .replace(R.id.fragment_container, fragment) .commit() } } ``` 希望这些示例代码能帮助你实现这个背单词app。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值