0

私はここでかなり奇妙な問題があります。フラグメントでは、私はプロセスを行い、プロセスが終了すると、ユーザーが広告をクリック/ディスマウントしたときにフラグメントにコールバックする広告を表示します。問題は、一部のデバイスでは、広告がハンドラ(実行中のフラグメントにある)にコールバックしたときに、フラグメントを含むアクティビティが破棄されていることですが、実行可能ファイルでさらに処理を行う必要があります。したがって、この場合runnableはNullPointerExceptionをスローします。intは実行されるとメソッドが実行されます。アクティビティが破棄されたときに何をするべきですか?フラグメントでコードを実行し続ける必要がありますか?

私はアクティビティがまだ生きているかどうかをチェックして、それが実行中のときだけランナブルを実行できますが、それでも生きていない場合は、後で実行する必要があるジョブの部分を引き続き行う必要があります。広告。

このような状況をどのように処理しますか?私はこの問題を解決することなく、何時間も問題を考えてきました。

ありがとうございます。

答えて

1

この場合、AsyncTaskを使用できます。

AsyncTaskプロセスはOSによって自動的に強制終了されません。 AsyncTaskプロセスはバックグラウンドで実行され、いずれの場合も自身のジョブを終了する責任があります。キャンセル(true)メソッドを呼び出すことでAsycnTaskを取り消すことができます。これにより、その後のisCancelled()の呼び出しがtrueを返すようになります。このメソッドを呼び出すと、doInBackground()が返された後にonPancalled(Object)メソッドがonPostExecute()の代わりに呼び出されます。

は、それが...

+0

私は他の任務のためにAsyncTasksを使用しました。しかし、本当にここで助けてくれると思いますか? AsyncTaskを実行するときよりも、アクティビティが殺されないことを意味しますか? – Notbad

+0

一方、問題を引き起こしているのは、私のアプリケーションから広告へのコンテキストの変更です。したがって、私の場合、プロセスの最初の部分についてはAsynTaskを、広告の表示 - >広告レスポンスハンドラ - >プロセスの第2部分のAsyncTaskを行う必要があります。これは同じ問題につながりませんか?アクティビティが死んでいる可能性があるため、2番目のAsyncTask(ジョブ継続)を開始することはできません。 – Notbad

+0

AsyncTaskは、アクティビティが破棄された場合でも、常にその実行を完了します。アクティビティが破棄されるとコンテキストはnullになりますので、ヌルチェックを行うことを忘れないでください。 –

0

を役に立てば幸い、これは私はおそらくいくつかのテキストコネクタがうまくいくかもしれない、あなたが求めているものを確認していないよう求めている方法をMMM、私はこれは状態の変化について、かなり基本的な質問であるかどうかわからないのですか非常に複雑なものです。

私が理解し何から:

が、これはあなたが画面を反転するときと同じ問題ではないでしょうか?アクティビティの変更によって復元されるデータのバンドルを作成します。あなたの活動は、あなたが

断片を使用すると、設定の変更を越え生きインスタンスを維持するために使用できる機能を持って、それを復元破壊されている場合は、この方法:偽retainInstance setRetainInstance(真)//デフォルトで

SerializableのようなParcelableは、オブジェクトをバイトストリームに保存するためのAPIです。オブジェクトがParcelableインタフェースを実装することを選ぶかもしれませんが、ここでは「stashable」と呼んでいます。オブジェクトはJavaでBundleに入れたり、Serializableをマーキングしてシリアル化できるようにしたり、Parcelableインターフェイスを実装することで隠されています。どちらの方法でも、同じ考えが適用されます。オブジェクトがきちんとしていない限り、これらのツールを使用しないでください。 ---または

あなたの「広告」をアラートに変換します。アクティビティを混乱させる。

--- ---

別のスレッドで応答を実行しますか?

+0

「あなたの「広告」をアラートに変えて、活動に混乱させないでください」とはどういう意味ですか?アラートとは何ですか? – Notbad

+0

明確にするために、私が広告を制御することはできません。Facebookオーディエンス広告なので、「警告」に変換することはできません。 – Notbad

関連する問題