應用自動更新封裝 Android

2021-08-09 13:16:30 字數 3541 閱讀 3520

自動更新的意義

分析原理

利用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...