我是一名新的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)
你知道如何解决这个问题吗?
我从开发者网站上关注了这份文档。我想显示用户输入中的文本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
最近,我将协程应用到我的项目中,一切似乎都很好,但今天我遇到了一个问题,使用协程 + 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)
我的问题是:如何暂停协程的执行以等待改造的回调?