2013-01-03 32 views
12

Đây là tình huống:Không gọi được doBecomeActive nếu tác vụ nền hết hạn

Tôi đang chọn một video lớn bằng cách sử dụng hình ảnh. Rõ ràng bộ chọn sẽ mất một chút thời gian để nén video. Vì vậy, để giảm bớt trải nghiệm người dùng, tôi đã bật tác vụ nền cho nó.

Bây giờ ở đây có vấn đề:

Nếu người dùng chọn một đoạn video và và bấm các nút home, ứng dụng đi vào nền và tiếp tục nén video cho 600 giây tiếp theo. Và nhiệm vụ nền hết hạn. Trong trình xử lý hết hạn, tôi đã dừng tác vụ nền của mình.

Bây giờ nếu người dùng đang nối lại ứng dụng sau khi kết thúc nền

- (void)applicationDidBecomeActive:(UIApplication *)application 

không được gọi. Bất cứ ai có thể giải thích cho tôi tại sao điều này xảy ra?

Trả lời

0

- (void) applicationDidBecomeActive: (UIApplication) ứng dụng

Phương pháp này Chỉ gọi khi sate của ứng dụng được thay đổi từ trạng thái không hoạt động trạng thái hoạt động. Có thể biết liệu video đã hoàn tất hay chưa? nếu có thể thì hãy cất giữ nó. và khi người dùng quay lại ứng dụng. chỉ cần kích hoạt chức năng mà bạn yêu cầu.

+0

Cảm ơn phản hồi của bạn. Nhưng tôi biết điều này. Tôi cần biết lý do tại sao phương thức đó không được gọi ngay cả sau khi ứng dụng nhận được tích hợp người dùng. Cảm ơn. – Deepukjayan

+0

* integration = interactive – Deepukjayan

0

Bạn có thể thử thêm câu lệnh tường trình vào phương thức applicationDidFinishLaunching không? Có thể ứng dụng sẽ chấm dứt hoặc bị treo trước khi người dùng mở nó.

Ngoài ra, tôi nghĩ cách chính xác là lưu bối cảnh phân tích cú pháp hiện tại khi ứng dụng nhận được tín hiệu như applicationDidFinishLaunching và khi ứng dụng bắt đầu tiếp tục phân tích cú pháp. Vì người dùng có thể đóng ứng dụng theo cách thủ công.

+0

Sẽ dùng thử. – Deepukjayan

1

Khi tác vụ nền hết hạn, ứng dụng của bạn sẽ thực sự bị đóng! Vì vậy, nó không hoạt động trở lại, nó khởi chạy.

Bạn nên xử lý các công cụ trong trình xử lý hết hạn hoặc/và khi tác vụ nền của bạn kết thúc thành công. Cả hai trường hợp, bạn cần đặt background_task là bị vô hiệu.

Nếu ứng dụng của bạn chuyển sang nền trong khi chuyển đổi video, sau đó người dùng mở lại sau khi kết thúc tác vụ hoặc tác vụ nền hết hạn, thì bạn sẽ thấy ứng dụng gọi ứng dụngDidBecomeActive.

Tôi cho rằng bạn biết điều đó, nhưng có thể bạn đang thiếu các thuộc tính đa nhiệm trong tệp Info.plist, vì vậy ứng dụng của bạn không chấp nhận các tác vụ nền theo cách bạn mong đợi.

Các vấn đề liên quan