小编Zap*_*ans的帖子

Firebase存储 - 限制用户上传到Firebase存储的映像大小

我是一名新的firebase开发人员.我正在开发一个Android应用程序,允许用户将图像上传到firebase存储.因为我使用Spark模式,所以我只有5Gb的存储空间.我想限制用户上传到firebase存储的图像的大小.下面是我用于将图像上传到firebase存储的代码.

Uri imageUri = Uri.parse(imagePath);
                    //need permistion android.permission.MANAGE_DOCUMENTS to upload file.
                    final StorageReference photoRef = mStorageRef.child(Constants.FIREBASE_LOCATION_IMAGE_EXAM).child(imageUri.getLastPathSegment());
                    taskStarted();
                    photoRef.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            Log.d(TAG, "upload success");
                            mUploadExamTaskCount--;
                            examURLArray.add(new ExamPage(taskSnapshot.getDownloadUrl().toString()));
                            if (mUploadExamTaskCount == 0) {//upload files success.
                                /**
                                 * update image link to database.
                                 */
                                DatabaseReference firebaseExamPage = FirebaseDatabase.getInstance().getReference(Constants.FIREBASE_LOCATION_EXAM_PAGE);
                                firebaseExamPage.child(examKey).setValue(examURLArray);
                                Log.d(TAG, "send upload  exam success br");
                                Intent taskCompletedIntent = new Intent(ACTION_UPLOAD_EXAM_COMPLETED);
                                LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(taskCompletedIntent);
                            }
                            taskCompleted();
                        }
                    })
Run Code Online (Sandbox Code Playgroud)

你知道如何解决这个问题吗?

firebase firebase-storage

11
推荐指数
2
解决办法
7981
查看次数

Jetpack Compose TextField 在输入新字符时不更新

我从开发者网站上关注了这份文档。我想显示用户输入中的文本OutlinedTextField,并使其在配置更改后保持不变。

使用下面的代码,当用户从键盘输入文本时,OutlinedTextField不会更新文本。

HelloContent(name = city.name, onNameChange = { city.name = it})//Doesn't work
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而这行代码可以正常工作:

HelloContent(name = temp, onNameChange = { temp = it})//Work
Run Code Online (Sandbox Code Playgroud)

下面是我用来实现的代码:

@Composable
fun HelloScreen() {
    var city by rememberSaveable(stateSaver = CitySaver) {
        mutableStateOf(City("Hanoi","VietNam"))
    }
    var temp by rememberSaveable {
        mutableStateOf("")
    }
    Column {
        HelloContent(name = city.name, onNameChange = { city.name = it})//Doesn't work
        HelloContent(name = temp, onNameChange = { temp = it})//Work
    }
}
@Composable
    fun HelloContent(name: String, onNameChange: (String) -> Unit) …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose compose-recomposition mutablestateof

8
推荐指数
1
解决办法
4834
查看次数

暂停协程的执行以等待回调

最近,我将协程应用到我的项目中,一切似乎都很好,但今天我遇到了一个问题,使用协程 + Retrofit 将文件/图像上传到服务器

使用协程+Retrofit上传文件似乎没有解决方案,所以必须使用回调进行Retrofit。

//Api interface
interface UploadFileApiKotlin {
    @Multipart
    @POST("/uploadFileApi")
    fun uploadFiles(
        @Part listUri: List<MultipartBody.Part>
    ): Call<Response<List<FileResponse>?>>
}
//ViewModel class
serviceScope.launch {
                //Insert into db
                repository.insertNewExtAct()
                //Send data into server.
                val call = RequestHelper.getUpLoadFilesKotlinRequest().uploadFiles(partList)
                call.enqueue(object : Callback<Response<List<FileResponse>?>> {
                    override fun onResponse(
                        call: Call<Response<List<FileResponse>?>>,
                        response: Response<Response<List<FileResponse>?>>
                    ) {
                        TODO("Not yet implemented")
                    }

                    override fun onFailure(
                        call: Call<Response<List<FileResponse>?>>,
                        t: Throwable
                    ) {
                        TODO("Not yet implemented")
                    }
                })
                //Wait for response from server and do logic
            }
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何暂停协程的执行以等待改造的回调?

android kotlin retrofit2 kotlin-coroutines coroutinescope

4
推荐指数
1
解决办法
7028
查看次数