自動更新的意義
分析原理
利用notification通知使用者更新進度 實踐
我們先開下大體的思路流程:
//真正的建立連線
private
void
makerequest() throws ioexception
} catch (ioexception e) }}
@override
public
void
run() catch (ioexception e)
}/**
*/public
enum failurecode
/***/
public
class
updatedownrequesthandle };}
protected
void
handleselfmessage(message msg)
}//各種訊息的處理邏輯
protected
void
handlerprogresschangedmessage(int progress)
protected
void
handle***iluremessage(failurecode failurecode)
public
void
onfinish()
public
void
onfailure(failurecode failurecode)
protected
void
sendfailuremsg(failurecode code) ));
}protected
void
sendfinishmsg()
protected
void
sendprogresschangedmsg(int progress) ));
}protected
void
sendmsg(message msg) else
}/**
* 獲取乙個訊息物件
**@param responsemessage
*@param response
*@return
*/protected message obtainmessage(int responsemessage, object response) else
return msg;
}public
void
sendresponsemessage(inputstream inputstream)
if (progress >= 100)
limit++;}}
}sendfinishmsg();
} catch (ioexception e) finally
if (acesfile != null)
} catch (ioexception e) }}
}}
public
class
updatedownservice
extends
service
@override
public
void
oncreate()
@override
public
intonstartcommand(intent intent, int flags, int startid)
apkurl = intent.getstringextra("apkurl");
notifyuser(getstring(r.string.update_download_start), getstring(r.string.update_download_start), 0);
startdownload();
return
super.onstartcommand(intent, flags, startid);
}private
void
startdownload()
@override
public
void
onprogresschanged(int progress, string downloadurl)
@override
public
void
onfinished(int completesize, string downloadurl)
@override
public
void
onfailure()
});}
/***
*@param result
*@param reason
*@param progress
*/private
void
notifyuser(string result, string reason, int progress) else
build.setautocancel(false);
build.setwhen(system.currenttimemillis());
build.setticker(result);
build.setcontentintent(progress >= 100 ? getcontentintent() : pendingintent.getactivity(this, 0, new intent(), pendingintent.flag_update_current));
mnotification = build.build();
mnotificationmanager.notify(0, mnotification);
}public pendingintent getcontentintent()
@override
public
void
ondestroy()
結束
相比在第一行**中的,這段**多了做了一些邏輯上的處理,是**更健壯性。原理都是相同的,如果你是在小範圍應用或是自己做的練手應用想加入自動更新功能,就可以將這些**封裝到自己的工具類中,當然距離成熟框架還是有很大的距離,比如我們更新要和伺服器版本對比。伺服器推送新版本功能等等,但是思路都是這樣的。在這裡我只是拋磚引玉。身為小白的我,還需努力。
寫的不好大家多多諒解。如有錯誤真心希望大家提出來。最後希望大家一起進步。加油!!!
原始碼位址。
app自動更新 android
public string getvesionname context context catch namenotfoundexception e return versionname 複製 更新以及安裝程式需要的許可權,在androidmanifest.xml中新增 複製 獲取apk的versio...
自動更新原理
安裝補丁的時候,客戶端的主程式一般是要關閉的,除非採用動態解除安裝 調入元件的技術,比如網路遊戲,就是盡量讓玩家邊玩遊戲邊更新。人們嫌這樣的公升級仍然太麻煩,後來出現了b s結構,大家像抓住了救命稻草一樣的追捧至今,希望能從這些勞動中解脫出來。b s結構就是瀏覽器 伺服器結構,它所有的功能,都是在瀏...
自動更新元件
一些說明 自動更新幾乎每個程式都有。而自動更新的基本方法就是 1.比較本地版本與伺服器上的版本,做出是否需要更新的判斷 配置檔案的格式如下 xml version 1.0 encoding gb2312 configmodel xmlns xsi xmlns xsd ver 2.0ver 版本號 p...