我正在使用img_width <- 0; // image width
img_height <- y_max - y_min + 1 // image height
// determining image width
for each point greyscale_xy_point in greyscale_vector
point_x_cell <- (pt.x - x_min) * x_epsilon * 10
if point_x_cell > img_width
img_width <- point_x_cell + 1
loop
// defining and initializing image with the calculated height and width
greyscale_img(img_width, img_height)
// initializing greyscale image points
for y <- 0 to greyscale_img.height
for x <- 0 to greyscale_img.width
greyscale_img[y][x] = 0
loop
loop
// filling image with vector data
for each point point_xy_greyscale in greyscale_vector
image_x = (point_xy_greyscale.x - x_min) * x_epsilon * 10
image_y = point_xy_greyscale.y - y_min
greyscale_image[image_y][image_x] = point_xy_greyscale.greyscale
loop
return greyscale_image
服务并使用该服务我想将视频和视频附带的元数据上传到服务器。
据我所知,我需要使用START_REDELIVER_INTENT
而不是START_REDELIVER_INTENT
,因为第一个会尝试再次从意图中获取数据,我需要这些数据。
我注意到的是,它会将带有元数据的视频正确上传到我的服务器,但会在接下来的1-2天内随机重新上传。
我没有经常测试过这种行为,但它已经发生了4-5次。难道我做错了什么 ?我是否应该在START_STICKY
添加一些内容,以便在成功上传我的数据时将其标记为正确,以便它不会重新发送?
我的代码:
Service
答案 0 :(得分:1)
成功上传视频后,您需要使用stopSelf(startId)
停止服务。
否则该服务将在被系统停止后重新启动,接收初始意图并再次上传视频。
仔细阅读START_REDEVLIVER_INTENT的说明:
如果此服务的进程在启动时被终止(在返回之后) onStartCommand(Intent,int,int)),然后它将被安排为a 重新启动,最后一次交付的Intent 重新发送再次通过 onStartCommand(Intent,int,int)。此意图将保持计划 用于重新传递,直到服务使用起始ID调用 stopSelf(int) 提供给onStartCommand(Intent,int,int)。该服务不会 接收带有null Intent的onStartCommand(Intent,int,int)调用 因为它只会在没有完成时重新启动 处理发送给它的所有Intent(以及任何此类待处理事件 在重新启动时交付。)