小编Abd*_*man的帖子

如何停止或取消 Kotlin 协程(立即停止当前运行的代码块)?

我想实现什么目标?

我有一个下载图像的任务,但随着屏幕滚动,它将取消以前的下载并开始下载新的图像。我希望当它取消coroutine下载上一个图像时,它会立即停止并释放bandwidth新图像,以便更快地下载。

我已经尝试过什么?

我尝试了多种方法来停止,coroutine但即使在取消后,它仍然会继续进行,直到完成下载coroutine。当我取消它时,它会生成coroutine一个变量并停止调用进一步的挂起函数。但问题是,如果它运行多次或从该任务下载图像,除非完成,否则不会取消。Like 循环将完成其迭代,然后协程将被取消。isActivefalseloop1000000network1000000

我已经尝试过这些但没有成功:

job.cancel()
scope.cancel()
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法来实现这一目标,但没有找到解决方案。我现在无法在我的项目中使用任何库。

这个用例不是通过线程、执行器服务、协程来实现的。因为所有人的行为都是一样的。

更多类似的问题:

如何取消 kotlin 协程以进行阻塞下载操作

AsyncTask 不会取消 android 中长时间运行的操作

协程持有的服务泄漏

android coroutine kotlin kotlin-coroutines coroutinescope

21
推荐指数
2
解决办法
3万
查看次数

SwitchCompat fontfamily不会改变

我正在使用Android Studio并在我的主要活动中有一个SwitchCompat小部件.它的默认fontfamily是sans-serif-medium,我把它改成了quicksand_light.我还有一些TextViews,每个fontfamily都设置为quicksand_light.在我的活动的xml文件的设计选项卡上,它显示了具有quicksand_light fontfamily的SwitchCompat,就像TextViews一样,但是当我在手机或模拟器上运行它时,SwitchCompat的fontfamily是sans-serif-medium.有什么额外的东西我需要做更改fontfamily或这是一个错误或这只是我?

android switchcompat

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

Facebook 广告集成到 Android 应用程序中

我在将横幅广告添加到我的 Android 应用程序的此布局中时遇到问题。但是这个广告没有显示。ActivityMain.java 中的实现没有问题,因为当我添加其他布局时,横幅开始显示。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:attribute="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".PlayerActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/gray_background"
        android:orientation="vertical">

// facebook banner ad

        <LinearLayout
            android:id="@+id/banner_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="vertical"
            />


       <developer.shivam.library.CrescentoContainer 
            android:id="@+id/crescentoContainer"
            android:layout_width="match_parent"
            android:layout_height="440dp"
            android:elevation="20dp"
            android:scaleType="centerCrop"
            attribute:curvature="50dp">

            <com.flaviofaria.kenburnsview.KenBurnsView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:src="@drawable/wallpaper" />

            <com.cleveroad.play_widget.PlayLayout
                android:layout_marginTop="?attr/actionBarSize"
                android:id="@+id/ivPhoto"
                android:layout_width="260dp"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true" />

        </developer.shivam.library.CrescentoContainer>


        <include layout="@layout/song_info" />


    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

截屏

android banner-ads android-layout facebook-audience-network

6
推荐指数
1
解决办法
8905
查看次数

为什么使用 React Hook 表单时表单测试失败?

我正在使用react-hook-form来构建一个表单。该表格运行良好,但测试未通过。

react-hook-form当我不使用并通过 onSubmit时测试通过<form onSubmit={onSubmit}>。当我通过 handleSubmit 传递 onSubmit 时<form onSubmit={handleSubmit(onSubmit)}>,它没有通过。

这是我的表格 App.js

import { useForm } from "react-hook-form";

export default function App({ onSubmit = (data) => console.log(data) }) {
  const { handleSubmit, register } = useForm();
  return (
    // <form onSubmit={onSubmit}>                  <--- This works
    // <form onSubmit={handleSubmit(onSubmit)}>    <--- This doesn't work
    <form onSubmit={handleSubmit(onSubmit)}>
      <input
        placeholder="Email"
        defaultValue=""
        key="email"
        {...register("email")}
      />
      <input
        placeholder="Password"
        defaultValue=""
        key="password"
        {...register("password")}
      />
      <input type="submit" value="submit" />
    </form>
  );
}
Run Code Online (Sandbox Code Playgroud)

这是我为其编写的测试 App.test.js

import { …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-testing-library react-hooks react-hook-form

3
推荐指数
1
解决办法
3625
查看次数

Android onClickListener只能工作一次,Button不能第二次工作

我是android编程的新手,这里是checkButton只能工作一次的代码.当我第二次点击它时没有任何反应.我似乎无法找到问题.

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    ProgressDialog progress;
    Button checkButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        checkButton = (Button) findViewById(R.id.button);
        checkButton.setOnClickListener(
            new View.OnClickListener(){
                @Override
                public void onClick(View v){

                    EditText aNumber = (EditText) findViewById(R.id.editText);
                    String aCount = aNumber.getText().toString();
                    boolean totalDigit = aCount.length()==16;
                    if(totalDigit){
                     if(checkConnectivity()) {
                       progress = new ProgressDialog(v.getContext());
                       progress.setTitle("Validating Number");
                       progress.setMessage("Processing...");
                       progress.setCancelable(true);
                       progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                       progress.show();
                       new …
Run Code Online (Sandbox Code Playgroud)

android android-layout onclicklistener

0
推荐指数
1
解决办法
488
查看次数