在我的onProate ContentProvider中,我想根据以下条件返回true或false。
Context ctx = getContext();
dbhelper = new DBHelper(ctx);
database = dbhelper.getWritableDatabase();
if (database == null) {
return false;
} else {
return true;
}
但是在oncreate中执行getWritableDatabase会导致ANR。因此,如果我将此发布到一个单独的线程,那么我将如何决定oncreate的返回值,因为数据库值为null。
Thread mCreateOrOpenDatabaseThread = new Thread (new Runnable(){
@Override
public void run() {
database = dbhelper.getWritableDatabase();
}
},"CreateOrOpenDatabaseThread");
mCreateOrOpenDatabaseThread.start();
我可以明确地返回true吗?当我们返回true或false时会发生什么,以及它将如何影响我的应用程序。当我们在oncreate中返回true或false时,android运行时内部会发生什么?
答案 0 :(得分:0)
也许是这样的?
public boolean func() {
FutureTask<Boolean> ft = new FutureTask<Boolean>(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
database = dbhelper.getWritableDatabase();
return true;//true or false..
}
});
new Thread(ft).start();
try {
return ft.get();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}