android服务下载,android服务之bindService和unService中下载任务中的应用
通過bindService方法來調用服務final Down down = data;
viewHolder.videoActionBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bEditMode) {
// 處于編輯模式,點擊刪除
deleteDown(down);
} else {
// 處于播放模式,點擊播放
VideoItemData video = (new Gson()).fromJson(down.getData(),
VideoItemData.class);
if(video != null) {
video.setMp4Url(down.getSavaPath());
VideoUtils.playVideo(context, video);
}
}
}
});
調用Service來刪除Down。在ServiceConnection對象的onServiceConnected方法中,執行刪除操作之后,調用unbindService方法來解綁定操作。
/**
* 刪除下載的記錄和內容。
*
* @param down
*/
private void deleteDown(final Down down){
Intent intent = new Intent(context, DownService.class);
ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
((DownBinder)service).deleteDown(down, true);
context.unbindService(this);
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
context.bindService(intent, conn, Context.BIND_AUTO_CREATE);
}
在Service類中定義Binder的子類。public class DownBinder extends Binder implements IDown {
@Override
public Down downVideo(VideoItemData video) {
if (!NetUtil.hasNetwork(context)) {
UIUtils.showToast(context, "網絡不給力");
return null;
}
if (!SettingSharedPreference.getInstance().getCacheWith2G3G() && !NetUtil.hasWifiNetWork(context)) {
UIUtils.showToast(context, "已經禁止2G/3G網絡下載視頻");
return null;
}
synchronized (downList) {
for (Down down : downList) {
// 如果已經在下載列表中,直接返回down對象。
if (down.getUrl().equals(video.getMp4Url())) {
UIUtils.showToast(context, "已經在下載列表中");
return down;
}
}
}
// 如果是一個新的下載,發送消息開始一個新的下載。
Message.obtain(handler, DOWN_URL, video).sendToTarget();
return null;
}
@Override
public List getAllDown() {
return getDownList();
}
@Override
public void pauseDown(Down down) {
downHandler.removeMessages(START_DOWN);
down = getExistDown(down);
downHandler.sendMessage(downHandler.obtainMessage(PAUSE_DOWN, down));
}
@Override
public void startDown(Down down) {
downHandler.removeMessages(PAUSE_DOWN);
down = getExistDown(down);
downHandler.sendMessage(downHandler.obtainMessage(START_DOWN, down));
}
/**
* 取出對應的Down 從downList中取出的Down都賦值了DownTask
*
* @param down
* @return
*/
private Down getExistDown(Down down) {
for (Down d : downList) {
if (down.getUrl().equals(d.getUrl())) {
return d;
}
}
return down;
}
@Override
public void deleteDown(Down down, boolean deleteFile) {
downHandler.removeMessages(START_DOWN);
downHandler.removeMessages(PAUSE_DOWN);
down = getExistDown(down);
downHandler.obtainMessage(DELETE_DOWN, (deleteFile ? 1 : 0), 0, down).sendToTarget();
}
@Override
public void clearDown(boolean deleteFile) {
downHandler.removeMessages(START_DOWN);
downHandler.removeMessages(PAUSE_DOWN);
downHandler.obtainMessage(CLEAR_DOWN, deleteFile).sendToTarget();
}
@Override
public void reStartDown(Down down) {
down = getExistDown(down);
downHandler.obtainMessage(RESTART_DOWN, down).sendToTarget();
}
}
在onCreate方法中創建DownBinder實例。downBinder = new DownBinder();
在onBind方法中返回DownBinder實例。
@Override
public IBinder onBind(Intent intent) {
return downBinder;
}
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android服务下载,android服务之bindService和unService中下载任务中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 男士纹眉多少钱啊?
- 下一篇: android ipc 多个客户端,An