Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未调用Android OnPOst Execute_Java_Android - Fatal编程技术网

Java 未调用Android OnPOst Execute

Java 未调用Android OnPOst Execute,java,android,Java,Android,我有一个异步任务。它运行sql查询。它应该自动转到onPostExecute,但并不总是转到那里。没有例外。日志也很好 class QueryDbTask extends AsyncTask<String, Void, Cursor> { protected Cursor doInBackground(String... params) { .... //sql query try { cur=activityObject.execSQL(Query);

我有一个异步任务。它运行sql查询。它应该自动转到onPostExecute,但并不总是转到那里。没有例外。日志也很好

class QueryDbTask extends AsyncTask<String, Void, Cursor> {
protected Cursor doInBackground(String... params) {
.... 
//sql query
try {
         cur=activityObject.execSQL(Query);

   }catch (Exception e) {
        e.printstacktrace
}
return cur;}
protected void onPostExecute(Cursor result) {   
}
类QueryDbTask扩展了异步任务{
受保护的游标doInBackground(字符串…参数){
.... 
//sql查询
试一试{
cur=activityObject.execSQL(查询);
}捕获(例外e){
e、 printstacktrace
}
返回cur;}
受保护的void onPostExecute(游标结果){
}
在什么条件下不会调用onPostExecute

我调试后发现它没有到达onPost Execute


两个异步任务是否可以同时进行模拟?

onPostExecute()
如果
doInBackground()
从未完成,或者如果任务被中断/取消,那么将不会调用
onCancelled()

必须在onPostExecute()上添加@Override注释才能调用

@Override
protected void onPostExecute(Cursor result) {
....
}

在onPostExecute中你在做什么???你怎么知道它没有被调用?如果你调试它,在Background之后会发生什么?会执行什么?所以你在onPostExecute方法中什么都不做?甚至不是超级调用?是“return cur”doInBackground中的行调用了?是。doInBackground中有Retuen语句。您可以将代码发布到onPostExecute()方法中吗?请检查onCancelled()是否不是。2个asyc任务可以同时运行吗?当然可以,也应该。你不需要多个核心,这毕竟叫做多任务。事实上,除非你强迫他们这样做,否则他们不会。在3.0之前,他们是串行运行的。在3.0中,他们让他们并行运行。在4.0+中,他们将其切换回。我在一次会议上问了这个问题“我们把它改回来了,因为它破坏了很多东西。”好的,那么我知道为什么它不总是在运行……在我的onresume中,我调用这个异步任务……但是在onresume结束时,我根据一些条件调用另一个异步任务。所以当这些条件满足时,第二个异步任务在第一个任务完成之前启动。是这样吗?我最好测试这个场景,这取决于版本操作系统的版本。在过去:)在运行异步任务时调用异步任务会取消第一个。从版本开始?(我认为是2.2)它们应该串行执行。