12

状況は次のとおりです。

imagepicker を使用して大きなビデオを選択しています。明らかに、ピッカーはビデオを圧縮するのに少し時間がかかります。そのため、ユーザー エクスペリエンスを容易にするために、バックグラウンド タスクを有効にしました。

ここで問題が発生します。

ユーザーがビデオを選択してホーム ボタンをタップすると、アプリケーションはバックグラウンドに移行し、次の 600 秒間ビデオの圧縮を続けます。バックグラウンド タスクの有効期限が切れます。有効期限ハンドラーで、バックグラウンド タスクを停止しました。

バックグラウンドの有効期限が切れた後にユーザーがアプリを再開する場合

- (void)applicationDidBecomeActive:(UIApplication *)application

は呼び出されていません。なぜこれが起こるのか誰にも説明できますか?

4

3 に答える 3

1

バックグラウンド タスクの有効期限が切れると、アプリは実際に閉じられます。つまり、再びアクティブになるのではなく、起動しています。

バックグラウンドタスクが正常に終了したとき、または/および有効期限ハンドラーで処理する必要があります。どちらの状況でも、background_task を無効に設定する必要があります。

動画の変換中にアプリがバックグラウンドになり、ユーザーがタスクの終了前またはバックグラウンド タスクの有効期限が切れる前にアプリを再度開くと、アプリが applicationDidBecomeActive を呼び出していることがわかります。

ご存知だと思いますが、Info.plist ファイルにマルチタスク プロパティがないため、アプリがバックグラウンド タスクを期待どおりに受け入れていない可能性があります。

于 2013-04-27T08:21:44.870 に答える
0

-(void) applicationDidBecomeActive:(UIApplication)アプリケーション

このメソッドは、アプリの状態が非アクティブ状態からアクティブ状態に変更されたときにのみ呼び出されます。ビデオのピッキングが終了したかどうかを知ることはできますか? 可能であれば、保管してください。ユーザーが再びアプリにアクセスしたとき。必要な機能を起動するだけです。

于 2013-01-04T09:07:13.763 に答える
0

メソッドにログ ステートメントを追加してみてくださいapplicationDidFinishLaunching。ユーザーがアプリを開く前に、アプリが終了またはクラッシュする可能性があります。

applicationDidFinishLaunchingまた、正しい方法は、アプリが信号を受信したとき、およびアプリが解析の再開を開始したときに、現在の解析コンテキストを保存することだと思います。ユーザーがアプリを手動で閉じることができるためです。

于 2013-01-06T12:35:01.890 に答える