[英]Asynctask android
I want to run 2 method simultaneously. 我想同时运行2种方法。 However it show only the output of second method.
但是,它仅显示第二种方法的输出。 Can you help me?
你能帮助我吗?
new AsyncTask<Void, Void, Bitmap>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Bitmap doInBackground(Void... params) {
Run1();
Run2();
return currentBitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if(bitmap!=null) {
loadImageToImageView();
}
}
}.execute();
Strategy depends on your tasks. 策略取决于您的任务。
Don't use AsyncTask for simultaneous jobs, because by default it executed serially. 不要将AsyncTask用于同时作业,因为默认情况下它是按顺序执行的。
Your first try can be java Threads, if you don't need UI modification. 如果不需要UI修改,则可以尝试使用Java Threads。
You can post results to UI thread by 您可以通过以下方式将结果发布到UI线程:
To process bitmap image consider to use HandlerThread . 要处理位图图像,请考虑使用HandlerThread 。
You can Use Two Seprate Threads
您可以使用两个单独的线程
// Create two threads:
Thread thread1 = new Thread() {
public void run() {
Run1();
}
}; };
Thread thread2 = new Thread() {
public void run() {
Run2();
}
}; };
// Start the both threads.
thread1.start();
thread2.start();
// Wait for them both to finish
thread1.join();
thread2.join();
Always execute your async tasks on Thread pool 始终在线程池上执行异步任务
new AsyncTask<Void, Void, Bitmap>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Bitmap doInBackground(Void... params) {
Run1();
Run2();
return currentBitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if(bitmap!=null) {
loadImageToImageView();
}
}
}.executeOnExecutors(AsyncTask.THREAD_POOL_EXECUTOR);
Let me know if it works. 让我知道它是否有效。
Try this 尝试这个
new AsyncTask<Void, Void, Bitmap>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Bitmap doInBackground(Void... params) {
Run1();
Run2();
return currentBitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if(bitmap!=null) {
loadImageToImageView();
}
}
}.executeOnExecutors(AsyncTask.THREAD_POOL_EXECUTOR);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.