微博开发2客户端的BaseTask以及BaseTaskPool
因为微博程序中客户端与服务器端的数据传递有时会耗时很长,所以采用多进程异步处理,就是界面UI与数据的发送接收不在一个进程里。每次数据传输的时候会开一个新的线程。 BaseTask就是这个记录异步任务属性的类 package com.app.demos.base; public class BaseTask { public static final int TASK_COMPLETE = 0; //任务完成 public static final int NETWORK_ERROR = 1; //网络错误 public static final int SHOW_LOADBAR = 2; //显示下载条 public static final int HIDE_LOADBAR = 3; //不显示下载条 public static final int SHOW_TOAST = 4; //显示Toast public static final int LOAD_IMAGE = 5; //加载图片 private int id = 0; private String name = ""; public BaseTask() {} public int getId () { return this.id; } public void setId (int id) { this.id = id; } public String getName () { return this.name; } public void setName (String name) { this.name = name; } public void onStart () { } public void onComplete () { } public void onComplete (String httpResult) { } public void onError (String error) { } public void onStop () throws Exception { } }
下面就是BaseTaskPool,任务池的相关代码。
package com.app.demos.base; import java.util.HashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import android.content.Context; import com.app.demos.util.HttpUtil; import com.app.demos.util.AppClient; public class BaseTaskPool { // task thread pool static private ExecutorService taskPool; // for HttpUtil.getNetType private Context context; public BaseTaskPool (BaseUi ui) { //初始建立缓冲池 this.context = ui.getContext(); taskPool = Executors.newCachedThreadPool(); } 根据不同的需求重载了addTask方法三次 // http post task with params public void addTask (int taskId, String taskUrl, HashMap<string string> taskArgs, BaseTask baseTask, int delayTime) { baseTask.setId(taskId); try { <span>taskPool.execute(new TaskThread(context, taskUrl, taskArgs, baseTask, delayTime));</span> } catch (Exception e) { taskPool.shutdown(); } } // http post task without params public void addTask (int taskId, String taskUrl, BaseTask baseTask, int delayTime) { baseTask.setId(taskId); try { <span>taskPool.execute(new TaskThread(context, taskUrl, null, baseTask, delayTime));</span> } catch (Exception e) { taskPool.shutdown(); } } // custom task public void addTask (int taskId, BaseTask baseTask, int delayTime) { baseTask.setId(taskId); try { <span>taskPool.execute(new TaskThread(context, null, null, baseTask, delayTime));</span> } catch (Exception e) { taskPool.shutdown(); } } 异步创建任务进程 // task thread logic private class TaskThread implements Runnable { private Context context; private String taskUrl; private HashMap<string string> taskArgs; private BaseTask baseTask; private int delayTime = 0; public TaskThread(Context context, String taskUrl, HashMap<string string> taskArgs, BaseTask baseTask, int delayTime) { this.context = context; this.taskUrl = taskUrl; this.taskArgs = taskArgs; this.baseTask = baseTask; this.delayTime = delayTime; } @Override public void run() { try { baseTask.onStart(); String httpResult = null; // set delay time if (this.delayTime > 0) { Thread.sleep(this.delayTime); } try { // remote task if (this.taskUrl != null) { // init app client AppClient client = new AppClient(this.taskUrl); // 用到了上一讲的AppClient封装了基本的http 的post与get方法 if (HttpUtil.WAP_INT == HttpUtil.getNetType(context)) { client.useWap(); } // http get if (taskArgs == null) { httpResult = client.get(); // http post } else { httpResult = client.post(this.taskArgs); } } // remote task if (httpResult != null) { baseTask.onComplete(httpResult); // local task } else { baseTask.onComplete(); } } catch (Exception e) { baseTask.onError(e.getMessage()); } } catch (Exception e) { e.printStackTrace(); } finally { try { baseTask.onStop(); } catch (Exception e) { e.printStackTrace(); } } } } }</string></string></string>
以上就介绍了微博开发2客户端的BaseTask以及BaseTaskPool,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tukar jenis data asas kepada rentetan menggunakan fungsi String.valueOf() Java Dalam pembangunan Java, apabila kita perlu menukar jenis data asas kepada rentetan, kaedah biasa ialah menggunakan fungsi valueOf() kelas String. Fungsi ini boleh menerima parameter jenis data asas dan mengembalikan perwakilan rentetan yang sepadan. Dalam artikel ini, kami akan meneroka cara menggunakan fungsi String.valueOf() untuk penukaran jenis data asas dan menyediakan beberapa contoh kod untuk

Kaedah menukar tatasusunan char kepada rentetan: Ia boleh dicapai dengan penugasan Gunakan sintaks {char a[]=" abc d\0efg ";string s=a;} untuk membenarkan tatasusunan char terus memberikan nilai kepada rentetan, dan laksanakan. kod untuk melengkapkan penukaran.

Setiap tahun sebelum Apple mengeluarkan versi utama baharu iOS dan macOS, pengguna boleh memuat turun versi beta beberapa bulan lebih awal untuk mengalaminya terlebih dahulu. Memandangkan perisian ini digunakan oleh orang awam dan pembangun, Apple telah melancarkan versi pembangun dan awam, yang merupakan versi beta awam bagi versi beta pembangun, untuk kedua-duanya. Apakah perbezaan antara versi pembangun dan versi awam iOS? Secara literal, versi pembangun ialah versi ujian pembangun dan versi awam ialah versi ujian awam. Versi pembangun dan versi awam menyasarkan khalayak yang berbeza. Versi pembangun digunakan oleh Apple untuk ujian oleh pembangun Anda memerlukan akaun pembangun Apple untuk memuat turun dan meningkatkannya.

Salam semua, hari ini saya akan berkongsi dengan anda pengetahuan asas Java: String. Tidak perlu diperkatakan kepentingan kelas String, ia boleh dikatakan sebagai kelas yang paling banyak digunakan dalam pembangunan back-end kami, jadi adalah perlu untuk membincangkannya.

Gantikan aksara (rentetan) dalam rentetan menggunakan fungsi String.replace() Java Dalam Java, rentetan ialah objek tidak boleh ubah, yang bermaksud apabila objek rentetan dicipta, nilainya tidak boleh diubah suai. Walau bagaimanapun, anda mungkin menghadapi situasi di mana anda perlu menggantikan aksara atau rentetan tertentu dalam rentetan. Pada masa ini, kita boleh menggunakan kaedah replace() dalam kelas String Java untuk melaksanakan penggantian rentetan. Kaedah replace() kelas String mempunyai dua jenis:

Gunakan fungsi String.length() Java untuk mendapatkan panjang rentetan Dalam pengaturcaraan Java, rentetan ialah jenis data yang sangat biasa Kita selalunya perlu mendapatkan panjang rentetan, iaitu bilangan aksara dalam rentetan. Di Java, kita boleh menggunakan fungsi length() kelas String untuk mendapatkan panjang rentetan. Berikut ialah kod contoh mudah: publicclassStringLengthExample{publ

Kaedah split dalam String menggunakan kaedah split() String untuk memisahkan String mengikut aksara atau rentetan yang masuk dan mengembalikan tatasusunan split. 1. Penggunaan umum Apabila menggunakan aksara umum, seperti @ atau, sebagai pemisah: Stringaddress="Shanghai@Shanghai City@Minhang District@Wuzhong Road";String[]splitAddr=address.split("@");System .out. println(splitAddr[0]+splitAddr[1]+splitAddr[2]+splitAddr[3

Cara menggunakan konteks untuk melaksanakan caching permintaan dalam Go Pengenalan: Semasa membina aplikasi web, kita selalunya perlu cache permintaan untuk meningkatkan prestasi. Dalam bahasa Go, kita boleh menggunakan pakej konteks untuk melaksanakan fungsi caching permintaan. Artikel ini akan memperkenalkan cara menggunakan pakej konteks untuk melaksanakan caching permintaan dan menyediakan contoh kod untuk membantu pembaca memahami dengan lebih baik. Apakah konteks? : Dalam bahasa Go, pakej konteks menyediakan cara untuk lulus antara berbilang goroutine
