我在 Android Studio 4.1 Canary 10 (Build #AI-201.7223.91.41.6507185) 中使用数据库检查器,由于这是一个新功能,我遇到了很多错误。并且有很多事件日志弹出窗口如下:
数据库检查器:读取 Sqlite 数据库时出错:无法对数据库 (id=8) 执行操作。数据库可能已经关闭。
它在应用程序启动后立即使我的应用程序崩溃。
所以我的问题是如何从我的进程中分离数据库检查器?一旦我附加了一个进程或只是打开了数据库检查器,它就不会让我的应用程序单独存在,直到我重新启动 android studio。有什么方法可以随时终止数据库检查器吗?
我想要做的是使用 kotlin 协程进行数据库操作,同时向用户显示加载屏幕。我的基本实现如下:
fun loadSomeData(){
mainCoroutineScope.launch {
showLoadingDialog()
// suspening function over Dispatchers.IO, returns list
val dataList = fetchDataFromDatabase()
inflateDataIntoViews(dataList)
hideLoadingDialog()
}
}
Run Code Online (Sandbox Code Playgroud)
当大型数据集的加载需要相当长的时间时,这对我来说非常有效。但是在fetchDataFromDatabase()快速完成的情况下,快速连续显示和隐藏对话框会产生令人讨厌的故障效果。
所以,我要的是显示该对话框只有在fetchDataFromDatabase()功能需要超过,可以说,100毫秒内完成。
所以我的问题是,使用 kotlin 协程实现这一目标的高效方法是什么?
我正在使用新的 Hilt 库进行依赖注入版本 2.28-alpha。我遵循了 Hilt 文档并使用注释对 Application 类进行了@HiltAndroidApp注释。但是当我尝试构建我的项目时,它抛出了一个巨大的错误列表,全部类似于:
error: package {ApplicationClassName}_HiltComponents does not exist
public final class Dagger{ApplicationClassName}_HiltComponents_ApplicationC extends
{ApplicationClassName}_HiltComponents.ApplicationC {
Run Code Online (Sandbox Code Playgroud)
我已经搜索过它,但由于它是一个新库,因此可用的 QnA 并不多。为什么会抛出该错误,我该如何解决?
在这个问题的最后,有c语言的中点圆绘制算法.我在代码中看到了以下两个语句
X =;
如果(d <);
在线程序和我们的书中,所以基本上我认为编译器可能会自动将它们初始化为0(零)所以我在我们的作业中写了相同的代码.但老师说这是错误的,实际上它在Turbo C++编译器中给出了无效表达式.这就是为什么我想知道它是否是错的,为什么它到处写的都是这样的.
这是代码:
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
void main() {
int gd=DETECT,gm;
int i,r,x,y,xc,yc;
float d;
clrscr();
initgraph(&gd,&gm,"c:\\tc\\");
printf("Enter Radius\n");
scanf("%d",&r);
printf("Enter Center of circle\n");
scanf("%d",&xc);
scanf("%d",&yc);
d=1.25-r;
x=;
y=r;
do {
if(d<) {
x=x+1;
d=d+2*x+1;
} else {
x=x+1;
y=y-1;
d=d+2*x-2*y+10;
}
putpixel(xc+x,yc+y,5);
putpixel(xc-y,yc-x,5);
putpixel(xc+y,yc-x,5);
putpixel(xc-y,yc+x,5);
putpixel(xc+y,yc+x,5);
putpixel(xc-x,yc-y,5);
putpixel(xc+x,yc-y,5);
putpixel(xc-x,yc+y,5);
} while(x<y);
getch();
}
Run Code Online (Sandbox Code Playgroud)
它也是上面代码的链接:
请帮帮我.谢谢.