問題タブ [ondestroy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android:ディスプレイを回転させるとサービスが破壊される
別のプロセスで実行されているサービスがあります。メインプロセスのUIスレッドがonDestroy()を終了した後、アプリケーションコンテキストにバインディングを提供し、BIND_AUTO_CREATEを指定したにもかかわらず、サービスが破棄されていることがわかりました。
私のメインプロセスのUIスレッドonCreate()には、次のバインディングコードがあります。
私のメインプロセスのUIスレッドonDestroy()には、次のバインド解除コードがあります。
stopService()を呼び出さないことに注意してください。
bindService()に関するAndroidのドキュメントには次のように書かれています。
サービスは、呼び出しコンテキストが存在する限り、システムによって必要と見なされます。
私がそれを正しく読んでいる場合、私はアプリケーションのコンテキストを提供したので、サービスはアプリケーションの存続期間中システムによって必要とされていると見なされます。
アプリケーションのコンテキストはonDestroy()で死ぬのではないかと思いました。これは、AndroidのドキュメントがgetApplicationContext()について述べていることです。
現在のプロセスの単一のグローバルApplicationオブジェクトのコンテキストを返します。
アプリケーションのコンテキストがonDestroy()で停止する場合、Androidには大きな問題があると思います。問題は、ディスプレイが回転すると、onDestroy()が呼び出されることです(直後にonCreate()が続きます)。したがって、その効果は、ディスプレイが回転したときに発生します-私の場合、それは非常に頻繁に発生します!-私のサービスは常に終了します。
私のアプリのプロセスのpidは決して変更されないことに注意してください。つまり、同じプロセスです。これは、「現在のプロセス」と記載されているgetApplicationContext()のドキュメントに照らして重要です。
これが私のデバッグログが示すものです:
04-03 05:15:12.874:DEBUG / MyApp(841):main onDestroy
04-03 05:15:12.895:DEBUG / MyApp(847):service onUnbind
04-03 05:15:12.895:DEBUG / MyApp(847 ):service onDestroy
04-03 05:15:12.934:DEBUG / MyApp(841):main onCreate
04-03 05:15:12.966:DEBUG / MyApp(847):service onCreate
04-03 05:15:12.975:DEBUG / MyApp(847):サービスonBind
だから私の質問は:
1)バインド/バインド解除についての私の理解は正しいですか?
2)UIスレッドのonDestroy()が呼び出されたときに、サービスが破棄されないようにする方法はありますか?
質問2のハックは、バインドを解除しないことです。しかし、onDestroy()が呼び出されるたびにバインディングがリークしているので、私はそれが好きではありません。リークされたバインディングが1つあることを「覚えて」、それだけをリークすることはできましたが、カスケードされたハックがあり、それは本当に醜いです。
android - 応答がないよりも、数時間正しく機能するサービス
Gmail クライアントでメールを受信したときに、GmailService クラスでメソッド CippaLippa() を実行したいと考えています。
私は AndroidManifest に受信機とサービスを持っています...
そしてこれらのクラス...
私の質問:すべてが数時間正常に動作し、Gmail から通知を受け取ると、CippaLippa() メソッドが起動します... その後、数時間後に Gmail 通知を受け取ると、CippaLippa() メソッドは起動しなくなります。
おそらく、GmailService クラスに「生き続ける」ように指示し、Gmail イベントを監視し続ける方法はありますか? これは、アクティビティではなくバックグラウンド サービスであるため、未使用のクラスを強制終了する Android OS が原因ではないと思います。私には手がかりがありません。
android - スレッドの扱い
バックグラウンドで動作するスレッドを管理する適切な方法は何ですか?
たとえば、いくつかのスレッドを作成するアクティビティがあります。次のことを行う必要があります:
1) アプリケーションが破棄されたときにすべてのスレッドを破棄する
2) ユーザーがアクティビティから離れた場合、アクティビティ内で作成されたスレッドを一時停止する
3) アクティビティが破棄された場合、アクティビティ内で作成されたスレッドを破棄する
私の頭に浮かぶ唯一のことは、すべてのスレッド変数を public として宣言して、上記のイベントで t.destroy() などを発行できるようにすることです。第一に、これが正しい方法であるかどうかはまったくわかりません。第二に、作成したすべてのスレッドを確実に参照できるようにコードを変更する必要があるため、好きではありません。
たとえば、Activity が新しいオブジェクト (例: LoadImages.class) をインスタンス化し、そのオブジェクトがロードする画像の数に応じていくつかのスレッドを作成する状況があります。スレッドは、呼び出し元のアクティビティからは見えません。
それで、スレッド参照を呼び出しアクティビティに渡す必要がありますか、またはスレッドの親が誰であるかを知り、特定の親アクティビティを持つスレッドのみを破棄する方法がありますか?
android - Dynamically registering a broadcast receiver
I registered my broadcast receiver like this(given below) in the manifest file. its working fine.
But it stays registered through out. Ie whenever the phone is booting my application starts. But I want only one time.
I've understood that if it is registered dynamically, we can achieve this. i.e. we can unregister it in onPause() or onDestroy() method. If it's possible, please give me the code to do that. I am a newbie in this. Any help would be appreciated. Thank you.
I tried the following code, but it was of no use:
android - 「Advanced Task Killer」によってサービスが強制終了されたことを検出できますか
私のアプリは、ユーザーがトグルボタンでアクティブまたは非アクティブにできるジオローカリゼーション サービスを実行します。サービスのステータスを確認するために、共有設定にブール値を書き込みます。サービスの onDestroy() のおかげで、サービスの開始と終了をリッスンします。
私の問題は、ユーザーが「高度なタスクキラー」でサービスを強制終了すると、サービスが強制終了されたことがわからず、onDestroy が呼び出されないことです。
どうすれば対処できますか?
ご協力いただきありがとうございます。
フロラン
android - Android アプリのすべてのアクティビティで OnDestroy() メソッドをオーバーライドしてもよろしいですか?
OnDestroy()
Android アプリのすべてのアクティビティでメソッドをオーバーライドしても大丈夫ですか?
メソッドを呼び出すだけsuper.onDestroy()
でonDestroy()
、メモリ リソースがクリーンアップされますか?
android - Android 2.2.1、向きの変更、およびonDestroy()
追跡しようとしている本当に凶悪なバグがあり、次のような状況になっています。
これが私のシナリオです。アクティビティを起動し、画面の向きを横向きに変更し、再び縦向きに戻し、デバイスの戻るボタンをクリックします。それを行った後、私のアクティビティのonDestroyが呼び出されることはありません。向きを変えると呼び出されますが、ユーザーが戻るキーを押したときは呼び出されません。
- デバッガーが接続されていないAndroid2.2.1でのみ発生します。
- 画面の向きを変更する必要があります。
- onDestroyは、画面の向きの後に呼び出されることはありません。
私はここで私の知恵の終わりにいます、そして私はシステムがonDestroyを呼び出すのを妨げることができるものについてのアイデアを探しています...
android - Android に相当する Application::onDestroy() はありますか?
こんにちは、Application::onCreate を使用してアプリの初期化コードを配置していますが、しばらく待ってから他のアプリを起動すると、Application クラスのインスタンスが再び作成されることに気付きました...
Android がアプリケーション インスタンスをシャットダウンしているときにグローバルに検出する方法は?
android - onDestroy() または finish() は実際にアクティビティを強制終了しますか?
実際、私は Android のシンプルで基本的な概念について質問していることを知っています。finish()
しかし、私はこれらとonDestroy()
方法について少し混乱しています。これによりアクティビティが強制終了され、これらのアクティビティに関連付けられたリソースが解放されるかどうか。
アクティビティを 1 つだけ含む単純なアプリケーションを試してみました。アプリケーションが実行されると、アクティビティが開始されるようなコンセプトだと思いました。戻るボタンをクリックすると終了します。そして、メモリ使用量を知るために、各ライフサイクルメソッド内にいくつかのトーストメッセージを表示しました。そして、戻るボタンをクリックすると、、、およびが実行されonPause()
ましonStop()
たonDestroy()
。この活動は終わったと思いました。しかし、アプリケーションを再起動すると、前回よりも多くのメモリが必要になりました。これは、Eclipse からアプリを実行するか、ホーム画面からアプリケーションを再起動するたびに発生します。
なぜそれが起こっているのですか?アプリケーション/アクティビティを実際に破棄してメモリを解放するにはどうすればよいですか?
私は自分のコードを含めています。クラス内でトーストメッセージを1つだけ送信します。次に、メモリ使用量も増加しています。
アプリケーションを実行するたびに、割り当てられたサイズが次のように増加しています: 3302744、3442384、3474552
マニフェスト:
メモリが毎回増加するのはなぜですか?
android - onBackPressedでonDestroyを呼び出さない
戻るボタンが押されたときに私の活動が破壊されたくありません。私のアプリは1.6SDKと互換性があります。http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.htmlと、ホームボタンのように機能するように戻るボタンを上書きするを参照して、次のコードを選択しました。
戻るボタンを押すと、これらのログが記録されます
moveTasToBack()をオーバーライドしていません。Anuclu戻るボタンが押されたときに破壊されないようにするにはどうすればよいですか。ボタンを無視するか、アクティビティを非表示にしたいのかもしれません。
手がかり、なぜそれが期待どおりに機能しないのか。
ありがとう