繁体   English   中英

我可以同时在主线程中运行两个进程吗

[英]Can I run two processes in the main thread simultaneously

我的主线程有问题。 我想做的是在打印任务运行时显示带有消息“ printing”的alertdilog(打印和显示alertdialog是同时进行的)。 问题是直到完成打印后才显示alertdialog。 我应该提到,alertdialog和打印任务都需要在主线程中运行(getActivity.runonuithread .....)。

我的问题是,我可以同时在主线程中运行两个不同的任务吗?

我尝试在后台线程中运行打印任务,但无法正常工作。 打印需要很长时间,并且会停止整个过程。

private void SWIPE1() {
    new Thread(new Runnable() {
        @Override
        public void run() {
                  //some code
                    ImpresssionDialog()
                    ImpressionTicket();

}}).start();



private void ImpresssionDialog() {
    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {

            optionDialogimp = new ProgressDialog(getContext());
            String alert1 = "Impression .....";
            new AlertDialog.Builder(getActivity());
            optionDialogimp.setTitle(alert1);
            optionDialogimp.show();
            optionDialogimp.setCanceledOnTouchOutside(false);

        }
    });
}





private void ImpressionTicket() {
    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
         //printing process ....
   }});

}

如果要在打印时显示警报对话框,建议您使用AsyncTask。 它具有一些您可以覆盖的方法:

onPreExecute() -( 可选方法 )在执行后台操作之前,我们应该在屏幕上显示一些东西,例如进度条或任何动画给用户。 我们可以在doInBackground()上直接减少后台操作,但是为了最佳实践,我们应该调用所有asyncTask方法。 您可以在此处开始显示警报对话框。

doInBackground(Params) -( 强制方法 )在此方法中,我们必须在后台线程上执行后台操作。 此方法中的操作不应涉及任何主线程活动或片段。 在这里进行实际的打印工作。

onPostExecute(Result) -( 可选方法 )在此方法中,我们可以更新后台操作结果的ui。 关闭警报对话框。

onProgressUpdate(Progress…) -( 可选方法 )在进行后台操作时,如果要更新UI上的某些信息,我们可以使用此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM