任何想法如何实现多线程?在尝试实现一个简单的线程时,返回值会引起我的问题。
//Retrieving information from database
public Cursor getInformation(DatabaseOperations dop) {
SQLiteDatabase SQ = dop.getReadableDatabase();
String[] columns = {TableData.TableInfo.KEY_activity, TableData.TableInfo.KEY_date, TableData.TableInfo.KEY_hour, TableData.TableInfo.KEY_minute, TableData.TableInfo.KEY_second, TableData.TableInfo.KEY_distance};
Cursor CR = SQ.query(TableData.TableInfo.TABLE_NAME, columns, null, null, null, null, null);
return CR;
}
答案 0 :(得分:0)
查看AsyncTask,或代表Handler,Messages和Runnables的HAMMER框架。
这是一个产生新线程并使用Runnable完成工作的示例,然后发布回调函数调用以发回结果。
interface DbOperation{
void onQueryResult(Cursor c);
}
//Retrieving information from database
public void getInformation(final DatabaseOperations dop, final DbOperation callback) {
new Thread(new Runnable(){
@Override
public void run(){
SQLiteDatabase SQ = dop.getReadableDatabase();
String[] columns = {TableData.TableInfo.KEY_activity,
TableData.TableInfo.KEY_date, TableData.TableInfo.KEY_hour,
TableData.TableInfo.KEY_minute, TableData.TableInfo.KEY_second,
TableData.TableInfo.KEY_distance};
Cursor CR = SQ.query(TableData.TableInfo.TABLE_NAME, columns, null, null, null, null, null);
callback.onQueryResult(CR);
}
}).start();
}
然后在调用方法时:
getInformation(dop, new DbOperation(){
@Override
public void onQueryResult(Cursor c){
if(c == null)
return;
// .. use the cursor, make sure to use Handler or runOnUiThread method
// since this call will run on a Background thread and you can't update
// the UI from a background thread
}
});
祝你好运,快乐的编码!