线程的使用
发布时间:2024.03.06
从服务器查询或更新数据时,需要访问网络,要求在辅助线程中进行,使用类ThreadUtils完成,如下:
ThreadUtils.executeByIo(new ThreadUtils.SimpleTask<参数类型>() {
@Override
public 参数类型 doInBackground() throws Throwable {
......
return 参数对象;
}
@Override
public void onSuccess(参数类型 param) {
.......
}
});
在doInBackground中完成网络访问,其返回值会传递给onSuccess的参数,onSuccess在主线程执行。
查询例子如下:
ThreadUtils.executeByIo(new ThreadUtils.SimpleTask<JCMQORecordsetC>() {
@Override
public JCMQORecordsetC doInBackground() throws Throwable {
JCMQORecordsetC qy=new JCMQORecordsetC();
qy.setServer(mmServer);
String key = "mpmod";
String sql;
if(m_kunnr!=null && !m_kunnr.isEmpty())
{
key = "kna1";
sql = "select * from l_kna1_crm where mandt='" + CRuntime.getInstance().MANDT() + "' and kunnr='" + m_kunnr + "'";
qy.addSql(key, sql);
key = "kna1l";
sql = "select * from kna1l where mandt='" + CRuntime.getInstance().MANDT() + "' and kunnr='" + m_kunnr + "' order by (erdat + ertim) desc";
qy.addSql(key, sql);
}
key = "t077d";
sql = "select * from l_mp_t077d where mandt ='" + CRuntime.getInstance().MANDT() + "' and spras='" + CRuntime.getInstance().SPRAS() + "'";
qy.addSql(key, sql);
key = "vkbur";
sql = "select * from v_tvbur where mandt='" + CRuntime.getInstance().MANDT() + "' and spras='" + CRuntime.getInstance().SPRAS() + "'";
qy.addSql(key, sql);
qy.open();
return qy;
}
@Override
public void onSuccess(JCMQORecordsetC qy) {
updateMaterialDataToUI(qy);
qy.delInstance();
mmServer.delInstance();
CGlobal.getInstance().endWait();//
}
});
更新例子如下:
ThreadUtils.executeByIo(new ThreadUtils.SimpleTask<Pair<JCTMmr1C, Pair<Boolean, String>>>() {
@Override
public Pair<JCTMmr1C, Pair<Boolean, String>> doInBackground() throws Throwable {
JCTMmr1C jctMmr1C = new JCTMmr1C();
jctMmr1C.setServer(mmServer);
jctMmr1C.meins = meins;
jctMmr1C.kunnr = kunnr;
jctMmr1C.spart = spart;
......
Boolean result;
result = jctMmr1C.add();
String result_str;
if (result) {
m_modnr = jctMmr1C.getReturnStr();
result_str = "商品" + m_modnr + (m_oper == TYPE_CREATE ? "创建成功" : "修改成功");
} else {
result_str = jctMmr1C.getErrorStr();
}
Pair<Boolean, String> pr1 = new Pair<>(result, result_str);
Pair<JCTMmr1C, Pair<Boolean, String>> prret = new Pair<>(jctMmr1C, pr1);
return prret;
}
@Override
public void onSuccess(Pair<JCTMmr1C, Pair<Boolean, String>> result) {
CGlobal.getInstance().endWait();
JCTMmr1C pTran = result.first;
pTran.delInstance();
mmServer.delInstance();
Pair<Boolean, String> pr1 = result.second;
Boolean bsucceed = pr1.first;
String msg = pr1.second;
if (bsucceed) {
CLocalBufServer.getInstance().checkDownload(CLocalBufServer.CD_FORMATNR);
showMessage(CMmf1Activity.this, msg);
setResult(RESULT_AEV);
finish();
} else {
showError(CMmf1Activity.this, msg, new NotifyDialog.NotifyDialogCallback() {
@Override
public void callback(View view) {
if (bsucceed) {
setResult(RESULT_AEV);
finish();
}
}
});
}
}
});
上一篇:服务器数据的查询与提交
下一篇:JNI封装操作说明书