客户服务

线程的使用

发布时间: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封装操作说明书

相关推荐

copyright©2010-2023深圳市点特科技有限公司 粤ICP备14069711号

尊敬的客户您好,请您留下您的需求和联系方式,我们将安排客服与您联系!

称呼

您的联系方式

您的公司名称