小编Mun*_*ali的帖子

使用具有自定义范围的Kotlin协程进行轮询并查看生命周期

我只是从Kotlin协程开始。我正在尝试使用协程轮询服务器,并希望在ActivityFragment暂停时停止轮询,并相应地恢复轮询。因此,我pollScope的生命周期比所提供的生命周期短ViewModel.viewModelScope。我对目前的实施方式不完全满意,有几个问题:

  1. 这是正确的创建方法吗pollScope?我也希望它在取消时viewModelScope也取消,这就是为什么我要指定父级作业。
  2. onResume()如果我取消pollJobs使用,为什么协程不能开始coroutineContext.cancel()?如果我保留一份工作清单并取消它们,它们会很好地启动。
  3. 这是整体正确的方法吗?有没有更好的办法?
    import androidx.lifecycle.LifecycleOwner
    import androidx.lifecycle.ViewModel
    import androidx.lifecycle.viewModelScope
    import com.spruce.messenger.utils.FullLifecycleObserverAdapter
    import kotlinx.coroutines.*
    import java.io.IOException
    import java.util.concurrent.CopyOnWriteArrayList
    import kotlin.coroutines.CoroutineContext


    suspend fun poll(initialDelay: Long = 5000,
                     maxDelay: Long = 30000,
                     factor: Double = 2.0,
                     block: suspend () -> Unit) {

        var currentDelay = initialDelay
        while (true) {
            try {
                try {
                    block()
                    currentDelay = initialDelay
                } catch (e: IOException) {
                    currentDelay …
Run Code Online (Sandbox Code Playgroud)

android coroutine kotlin kotlin-coroutines

7
推荐指数
1
解决办法
296
查看次数

Android Studio 3.5代码格式更改了XML布局中布局层次结构中的UI组件的顺序

今天,我更新了最新版本的Stable Android Studio 3.5,在此版本中,布局编辑器具有某些奇怪的行为。

当我尝试使用Android Studio快捷方式重新设置代码格式,Ctrl+Alt+L但又重新格式化了不包含代码的整个组件时,我也尝试使用“代码”->“重新格式化代码”。但面临同样的问题。

重新排列代码之前的XML布局,

<LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/quick_start_title_text_top_margin"
        android:gravity="center"
        android:orientation="vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <android.support.v7.widget.AppCompatTextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/quick_start"
            android:textColor="@color/colorBlack"
            android:textSize="@dimen/quick_start_title_text"
            app:fontPath="@string/font_semi_bold" />

        <android.support.v7.widget.AppCompatImageView
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:src="@drawable/bg_quick_start_line" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

XML重新排列代码后,

<LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/quick_start_title_text_top_margin"
        android:gravity="center"
        android:orientation="vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <android.support.v7.widget.AppCompatImageView
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:src="@drawable/bg_quick_start_line" />

        <android.support.v7.widget.AppCompatTextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/quick_start"
            android:textColor="@color/colorBlack"
            android:textSize="@dimen/quick_start_title_text"
             app:fontPath="@string/font_semi_bold" />

    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

它会重新排列所有组件,而不是重新排列组件中的Code(如属性)。

因此,请帮助我解决问题,或者有人可以在Android Studio中提供一些设置来解决此问题。

xml android android-layout android-studio

7
推荐指数
0
解决办法
136
查看次数

Push notification not register to the app on iOS 13

I build my app and I put a breakpoint in didRegisterForRemoteNotificationsWithDeviceToken but it's not triggered. It works fine on other versions of iOS.

Is this a bug in iOS 13 or did I miss something new in iOS 13?

I use Xcode Beta 6 and iOS 13 beta 8.

xcode ios ios13

7
推荐指数
1
解决办法
1552
查看次数