添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
 <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toTopOf="@id/nav_view"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/mobile_navigation" />

其次,定义 navigation/mobile_navigation.xml Activity 的添加,需要先在 Project 创建对应的 Activity ,即可在布局设计器处理。

  <navigation  
  <fragment
       android:id="@+id/navigation_home"
       android:name="com.android.myapplication.ui.home.HomeFragment"
       android:label="@string/title_home"
       tools:layout="@layout/fragment_home">
          <action
           android:id="@+id/action_navigation_home_to_detail_activity"
           app:destination="@id/detail_activity" />
   </fragment>
   <activity
       android:id="@+id/detail_activity"
       android:name="com.android.myapplication.ui.detail.DetailActivity"
       android:label="DetailActivity">
       <argument
           android:name="detailId"
           app:argType="string" />
   </activity>
  </navigation>

最后,页面跳转,参数传递

    val direction =  HomeFragmentDirections.actionNavigationHomeToDetailActivity(plantId)
    view.findNavController().navigate(direction)

参数接收:

    private val args: DetailActivityArgs by navArgs()

Databinding

onCreateView() 中直接使用控件,会报空指针异常,这个姿势 binding.tvNavigation 是可以的。

  val binding = FragmentHomeBinding.inflate(inflater, container, false)
  binding.tvNavigation.setOnClickListener {
              navigateToDetailPage("1", it)

布局文件中,字符串拼接,如跟 ViewModel一起使用:

   android:text='@{"Data From Network-> "+viewModel.response}'

ViewModel

以生命周期的方式存储和管理界面相关的数据。 Kotlin协程 viewModelScope, 如果 ViewModel已清除,则在此范围内启动的协程都会自动取消。

  private val homeViewModel: HomeViewModel by viewModels {
          InjectorUtils.provideHomeViewModelFactory(requireContext())
  viewModelScope.launch {

LiveData

一种可观察的数据存储器类,具有生命周期感知能力,意指它遵循其他应用组件(如 ActivityFragment 或  Service)的生命周期。

     var plantName = gardenPlantings.map {
map实现
LiveData的转换

创建应用数据的缓存,  SQLite的基础上提供了一个抽象层,充分利用 SQLite 的强大功能,更强健的数据库访问机制。

Room 引用复杂数据, Room 提供了在基本类型和包装类型之间进行转换的功能,但不允许实体之间进行对象引用。

要为自定义类型添加此类支持,您需要提供一个  TypeConverter,它可以在自定义类与  Room 可以保留的已知类型之间来回转换。

  class Converters {//TypeConverters
@TypeConverters注释添加到 
AppDatabase类中,以便 
Room可以使用您为该
AppDatabase 中的每个实体和 
DAO 定义的转换器:

  @Database(entities = table, version = 1, exportSchema = false)
  @TypeConverters(Converters::class)
  abstract class AppDatabase : RoomDatabase() {
  @Insert  suspend fun insertPlant(plant: Plant): Long

认为是协程 suspend

WorkManager

WorkManager API可以轻松地调度即使在应用退出或设备重启时仍应运行的可延迟异步任务。

  val workManagerConfiguration = Configuration.Builder()
              .setWorkerFactory(RefreshDataWork.Factory())
              .build()
   WorkManager.initialize(appContext, workManagerConfiguration)
          val constraints = Constraints.Builder()
              .setRequiresCharging(true)
              .setRequiredNetworkType(NetworkType.CONNECTED)
              .build()
  val work = PeriodicWorkRequestBuilder<RefreshDataWork>(2, TimeUnit.HOURS)
              .setConstraints(constraints)
              .build()
  WorkManager.getInstance(appContext)
              .enqueueUniquePeriodicWork(RefreshDataWork::class.java.name, KEEP, work)
PeriodicWorkRequest用于重复或重复工作,最小间隔应为15分钟。

OneTimeWorkRequest一次性申请,不重复工作。

WorkManager按顺序执行,单例模式, app启动时执行一次。

对于进阶这条路而言,学习是会有回报的!

你把你的时间投资在学习上,就意味着你可以收获技能,更有机会增加收入。

附上我的Android核心技术学习大纲,获取相关内容来我的GitHub一起玩耍:
vx:xx1341452

分享我的Android学习PDF大全来学习,这份Android学习PDF大全真的包含了方方面面了,内含Java基础知识点、Android基础、Android进阶延伸、算法合集等等

我的这份学习合集,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

获取方式:关注我看个人介绍,或直接  点击我免费领取

人生的长跑中,跑得最远的人,可能不是跑得最快的人,而是规划了最佳行程的人 Android学习也是如此,分享Android学习内容、面试精选等,关注我,需要学习计划大纲和学习内容:xx13414521

注册时间:2019-11-05

157614

广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员