Android(安卓)中常用代码片段
16lz
2021-12-04
一:AsyncTask 的使用
(1)activity_main.xml
<TextView android:id="@+id/tvInfo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <ProgressBar android:layout_below="@id/tvInfo" android:id="@+id/asyncPb" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" />
(2)MainActivity.java
public class MainActivity extends Activity {private ProgressBar asyncPb = null;private TextView tvInfo = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tvInfo = (TextView)findViewById(R.id.tvInfo);String params = "Welcome to here";new MyAsyncTask().execute(params);}private class MyAsyncTask extends AsyncTask<String, Integer, String>{@Override protected void onPreExecute() { //做一些预处理asyncPb = (ProgressBar)findViewById(R.id.asyncPb);asyncPb.setVisibility(View.VISIBLE); }@Overrideprotected String doInBackground(String... params) {//执行耗时操作,网络任务、文件操作、数据库操作、复杂计算操作int myProgress = 0;int length = params[0].length();for(int i=1; i<=length; i++){myProgress = i;//模拟耗时操作try {Thread.sleep(300);} catch (InterruptedException e) {e.printStackTrace();}publishProgress((int)((myProgress/(float)length)*100));}//它将传递给onPostExecutereturn params[0];}@Overrideprotected void onProgressUpdate(Integer... values) {//更新进度条asyncPb.setProgress(values[0]);tvInfo.setText("已加载:"+(values[0])+"%");}@Overrideprotected void onPostExecute(String result) {//更新UItvInfo.setText("加载完成:"+result);}}}
二:HttpGet
public static String getRequest(String url){ String result = ""; HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(url); try { HttpParams httpParams = client.getParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 3000); HttpConnectionParams.setSoTimeout(httpParams, 5000); HttpResponse response = client.execute(get); if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ result = EntityUtils.toString(response.getEntity()).trim(); } } catch (Exception e) { //连接超时 } return result; }
三:Volley POST
private RequestQueue rQueue = null;rQueue = WzhVolley.getRequestQueue();StringRequest postRequest = new StringRequest( Request.Method.POST, URL, createDoSuccess(), createDoError()){ protected Map<String,String> getParams(){ Map<String,String> params = new HashMap<String,String>(); params.put(key,value); return params; } }; postRequest.setRetryPolicy(new DefaultRetryPolicy(WR.DEFAULT_TIMEOUT_MS, WR.DEFAULT_MAX_RETRIES, WR.DEFAULT_BACKOFF_MULT));rQueue.add(postRequest);private Response.Listener<String> createDoSuccess(){ return new Response.Listener<String>(){ public void onResponse(String arg0){ //... JSONObject jsonObj = new JSONObject(arg0); //or JSONArray jsonArr = new JSONArray(arg0); } };}private Response.ErrorListener createDoError(){ return new Response.ErrorListener(){ public void onErrorResponse(VolleyError arg0){ //... } };}
更多相关文章
- Android文件操作
- Android(安卓)Handler简单例子
- Android(安卓)Studio-解决Fetching android sdk component infor
- android中的数据库操作
- Service与Android系统设计(7)--- Binder驱动
- android > EditText 控件操作
- Service与Android系统设计(7)--- Binder驱动
- ReactNative android离线加载
- Android(安卓)Bitmap最全基本操作:与Drawable 、File、btye[]互转