Showing
2 changed files
with
38 additions
and
15 deletions
@@ -128,25 +128,47 @@ public class PrintingJob extends PrintDocumentAdapter { | @@ -128,25 +128,47 @@ public class PrintingJob extends PrintDocumentAdapter { | ||
128 | 128 | ||
129 | @Override | 129 | @Override |
130 | public void onFinish() { | 130 | public void onFinish() { |
131 | - try { | ||
132 | - while (true) { | ||
133 | - int state = printJob.getInfo().getState(); | ||
134 | - | ||
135 | - if (state == PrintJobInfo.STATE_COMPLETED) { | ||
136 | - printing.onCompleted(this, true, ""); | ||
137 | - break; | ||
138 | - } else if (state == PrintJobInfo.STATE_CANCELED) { | ||
139 | - printing.onCompleted(this, false, "User canceled"); | ||
140 | - break; | 131 | + Thread thread = new Thread(new Runnable() { |
132 | + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) | ||
133 | + @Override | ||
134 | + public void run() { | ||
135 | + try { | ||
136 | + final boolean[] wait = {true}; | ||
137 | + while (wait[0]) { | ||
138 | + new Handler(Looper.getMainLooper()).post(new Runnable() { | ||
139 | + @Override | ||
140 | + public void run() { | ||
141 | + int state = printJob.getInfo().getState(); | ||
142 | + | ||
143 | + if (state == PrintJobInfo.STATE_COMPLETED) { | ||
144 | + printing.onCompleted(PrintingJob.this, true, ""); | ||
145 | + wait[0] = false; | ||
146 | + } else if (state == PrintJobInfo.STATE_CANCELED) { | ||
147 | + printing.onCompleted(PrintingJob.this, false, "User canceled"); | ||
148 | + wait[0] = false; | ||
149 | + } | ||
150 | + } | ||
151 | + }); | ||
152 | + | ||
153 | + if (wait[0]) { | ||
154 | + Thread.sleep(200); | ||
155 | + } | ||
156 | + } | ||
157 | + } catch (final Exception e) { | ||
158 | + new Handler(Looper.getMainLooper()).post(new Runnable() { | ||
159 | + @Override | ||
160 | + public void run() { | ||
161 | + printing.onCompleted(PrintingJob.this, | ||
162 | + printJob != null && printJob.isCompleted(), e.getMessage()); | ||
163 | + } | ||
164 | + }); | ||
141 | } | 165 | } |
142 | 166 | ||
143 | - Thread.sleep(200); | 167 | + printJob = null; |
144 | } | 168 | } |
145 | - } catch (Exception e) { | ||
146 | - printing.onCompleted(this, printJob != null && printJob.isCompleted(), e.getMessage()); | ||
147 | - } | 169 | + }); |
148 | 170 | ||
149 | - printJob = null; | 171 | + thread.start(); |
150 | } | 172 | } |
151 | 173 | ||
152 | void printPdf(@NonNull String name, Double width, Double height, Double marginLeft, | 174 | void printPdf(@NonNull String name, Double width, Double height, Double marginLeft, |
-
Please register or login to post a comment