国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

用xutils3.0進行下載項目更新

2019-12-12 05:48:42
字體:
來源:轉載
供稿:網友

xUtils簡介

xUtils 包含了很多實用的android工具。

xUtils 支持大文件上傳,更全面的http請求協議支持(10種謂詞),擁有更加靈活的ORM,更多的事件注解支持且不受混淆影響...

xUitls 最低兼容android 2.2 (api level 8)

目前xUtils主要有四大模塊:

DbUtils模塊:

android中的orm框架,一行代碼就可以進行增刪改查;
支持事務,默認關閉;
可通過注解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請注解表名和列名);
支持綁定外鍵,保存實體時外鍵關聯實體自動保存或更新;
自動加載外鍵關聯實體,支持延時加載;
支持鏈式表達查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。

ViewUtils模塊:

android中的ioc框架,完全注解方式就可以進行UI,資源和事件綁定;
新的事件綁定方式,使用混淆工具混淆后仍可正常工作;
目前支持常用的20種事件綁定,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event。

HttpUtils模塊:

支持同步,異步方式的請求;
支持大文件上傳,上傳大文件不會oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求;
下載支持301/302重定向,支持設置是否根據Content-Disposition重命名下載的文件;
返回文本內容的請求(默認只啟用了GET請求)支持緩存,可設置默認過期時間和針對當前請求的過期時間。

BitmapUtils模塊:

加載bitmap的時候無需考慮bitmap加載過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;
支持加載網絡圖片和本地圖片;
內存管理使用lru算法,更好的管理bitmap內存;
可配置線程加載線程數量,緩存大小,緩存路徑,加載顯示動畫等...

以上說這么多都是為下文做鋪墊,下面步入主題:

寫的例子比較簡單,是用xutils3.0來進行下載項目更新

1.先通過網絡請求,判斷版本是否要更新

2.若要更新,則彈出一個彈窗,我用的是系統自帶的Dialog,將下載的版本號及下載的內容提示展示出來

3.當用戶點擊下載時,開始下載,下載時展示一個水平的進度條

4.下載完成后,進度條消失,調用系統安裝apk

如下是代碼 用到的xutils的jar包是3.3.32版本的

package com.item.weixin;import java.io.File;import org.json.JSONException;import org.json.JSONObject;import org.xutils.x;import org.xutils.common.Callback;import org.xutils.http.RequestParams;import android.annotation.SuppressLint;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageInfo;import android.content.pm.PackageManager.NameNotFoundException;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.view.Window;import android.widget.Button;/*** 設置xutils下載* * @author Administrator* */public class LoginActivity extends Activity {private Button ll_update;private ProgressDialog pDialog;private String nowVersion;private ProgressDialog progressDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_login);ll_update = (Button) findViewById(R.id.btn_login);ll_update.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubcheckUpdate();}});try {PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);nowVersion = packageInfo.versionName;} catch (NameNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 下載更新,*/protected void checkUpdate() {// TODO Auto-generated method stubproDialogShow(LoginActivity.this, "正在查詢...");RequestParams params = new RequestParams("url");x.http().get(params, new Callback.CommonCallback<String>() {@Overridepublic void onCancelled(CancelledException arg0) {// TODO Auto-generated method stub}@Overridepublic void onError(Throwable arg0, boolean arg1) {// TODO Auto-generated method stubPDialogHide();System.out.println("提示網絡錯誤");}@Overridepublic void onFinished() {// TODO Auto-generated method stub}@Overridepublic void onSuccess(String arg0) {// TODO Auto-generated method stubPDialogHide();try {JSONObject object = new JSONObject(arg0);boolean success = object.getBoolean("succee");if (success) {String desc = object.getString("desc");String downloadurl = object.getString("downloadurl");String versionname = object.getString("versionname");if (nowVersion.equals(versionname)) {System.out.println("當前版本為最新,不用跟新");} else {// 不同,彈出更新提示對話框setUpDialog(versionname, downloadurl, desc);}}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}});}/*** * @param versionname* 地址中版本的名字* @param downloadurl* 下載包的地址* @param desc* 版本的描述*/protected void setUpDialog(String versionname, final String downloadurl,String desc) {// TODO Auto-generated method stubAlertDialog dialog = new AlertDialog.Builder(this).setCancelable(false).setTitle("下載" + versionname + "版本").setMessage(desc).setNegativeButton("取消", null).setPositiveButton("下載", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stubsetDownLoad(downloadurl);}}).create();dialog.show();}/*** 下載包* * @param downloadurl* 下載的url* */@SuppressLint("SdCardPath")protected void setDownLoad(String downloadurl) {// TODO Auto-generated method stubRequestParams params = new RequestParams(downloadurl);params.setAutoRename(true);//斷點下載params.setSaveFilePath("/mnt/sdcard/demo.apk");x.http().get(params, new Callback.ProgressCallback<File>() {@Overridepublic void onCancelled(CancelledException arg0) {// TODO Auto-generated method stub}@Overridepublic void onError(Throwable arg0, boolean arg1) {// TODO Auto-generated method stubif(progressDialog!=null && progressDialog.isShowing()){progressDialog.dismiss();}System.out.println("提示更新失敗");}@Overridepublic void onFinished() {// TODO Auto-generated method stub}@Overridepublic void onSuccess(File arg0) {// TODO Auto-generated method stubif(progressDialog!=null && progressDialog.isShowing()){progressDialog.dismiss();}Intent intent = new Intent(Intent.ACTION_VIEW);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "demo.apk")),"application/vnd.android.package-archive");startActivity(intent);}@Overridepublic void onLoading(long arg0, long arg1, boolean arg2) {// TODO Auto-generated method stubprogressDialog.setMax((int)arg0);progressDialog.setProgress((int)arg1);}@Overridepublic void onStarted() {// TODO Auto-generated method stubSystem.out.println("開始下載");progressDialog = new ProgressDialog(LoginActivity.this);progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//設置為水平進行條progressDialog.setMessage("正在下載中...");progressDialog.setProgress(0);progressDialog.show();}@Overridepublic void onWaiting() {// TODO Auto-generated method stub}});}private void proDialogShow(Context context, String msg) {pDialog = new ProgressDialog(context);pDialog.setMessage(msg);// pDialog.setCancelable(false);pDialog.show();}private void PDialogHide() {try {if (pDialog != null && pDialog.isShowing()) {pDialog.dismiss();}} catch (Exception e) {e.printStackTrace();}}}

以上所述是小編給大家介紹的用xutils3.0進行下載項目更新,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金秀| 石渠县| 巧家县| 赫章县| 榆中县| 阜新市| 东乌珠穆沁旗| 郓城县| 闵行区| 屏东市| 武义县| 临漳县| 格尔木市| 杭锦后旗| 胶南市| 汽车| 谢通门县| 海晏县| 汝南县| 青海省| 祁门县| 吐鲁番市| 长顺县| 昆山市| 永川市| 静乐县| 张家口市| 富裕县| 营口市| 大名县| 大理市| 嘉鱼县| 临朐县| 江西省| 若尔盖县| 冀州市| 黑河市| 慈溪市| 盘山县| 顺平县| 顺平县|