私は3つのアクティビティを持つアプリを持っており、ユーザーはこれら3つのアクティビティの間で常にタブ移動します。ユーザーがアプリケーションを閉じる直前に、私のコードはインターネットから現在時刻をダウンロードして保存します。問題は、onPause()メソッドで時間をダウンロードするコードがあることです。これにより、ユーザーがアクティビティを切り替えるたびにデータが繰り返しダウンロードされます。私はonDestroy()を使ってみましたが、ダウンロードは決して開始しませんでした。ユーザーがアクティビティスイッチで呼び出されたものではなく、アプリケーションを最小化または閉じるときに呼び出されるメソッドはありますか? どうもありがとうございました。onPause以外の方法?
答えて
これはApplication
クラスを使用して達成できます。そこに私たちのアプリがバックグラウンドに行くときを識別するためにActivityLifecycleCallbacks
を実装することができ、その結果に基づいて我々は必要な作業を実行することができます。ここで、サンプルコード:上記のコードで
public class MyApplication extends Application implements ActivityLifecycleCallbacks {
private Handler mHandler;
@Override
public void onCreate() {
super.onCreate();
mHandler = new Handler();
}
...
@Override
public void onActivityResumed(Activity activity) {
Log.i("Activity Resumed", activity.getLocalClassName());
// cancel scheduled download operation (if any)
mHandler.cancelCallbacksAndMessages(null);
}
@Override
public void onActivityPaused(Activity activity) {
Log.i("Activity Paused", activity.getLocalClassName());
// schedule a download operation after 5 seconds
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
performDownloadOperation()
}
}, 5000);
}
... // other lifecycle callbacks
private void performDownloadOperation() {
// perform download operation here
}
}
、我々は基本的にユーザー【及びシステム]別のアクティビティから切り替える5秒間の猶予時間を与えています。さもなければ、我々は、アプリがバックグラウンドに行って、そこに私たちのものを行うことに注意します。ユーザーが4秒間別のアプリに切り替えてから戻ってきても、データはまだダウンロードされません。ほとんどの場合、これで問題はありません。
上記のクラスを使用するには、マニフェストファイルの<application>
タグの下にプロパティのクラスリファレンスをandroid:name=".MyApplication"
として指定する必要があります。
切り替えられたとき、それが呼び出されるためonStop –
閉じるとはどういう意味ですか?強制的に止める? – Shaishav
ユーザーが四角形を押して最近のアプリの引き出しを開くと(アプリを最小限にする)、アプリをスワイプして閉じる(閉じる)と、 –
Activity::isFinishing()
を利用できます。これは、(1)別のアクティビティを起動するとき、または(2)アプリがバックグラウンドに置かれたときにfalseを返しますが、(3)バックボタンが押されたとき、または(4)誰かがアクティビティでfinish
(1)と(2)を区別することが重要な場合は、アクティビティを起動してリセットするたびにフラグを保持し、にリセットすることができます。
- 1. ケースステートメント以外のルックアップテーブルの作成方法
- 2. http以外のリンクを開く方法
- 3. ブートストラップ以外にカスタムドロップダウンを行う方法
- 4. didRegisterForRemoteNotificationsWithDeviceToken以外の方法でデバイストークンを使用する方法?
- 5. NullPointerException - onPause()
- 6. onPause():superNotCalledException
- 7. アプリケーションレベルonPause
- 8. CSS以外の長方形以外の形状ですか?
- 9. NFCインテントonNewIntentの前にonPauseを呼び出す - onPauseコールの起点を知る方法?
- 10. 変数の状態を保存する以外に、onPause、onStop、onDestroyの良い習慣は何ですか?
- 11. Android - onPauseですべてのダイアログを消す方法
- 12. MainActivityの外部でonResume()とonPause()を使用する
- 13. onPause()の殺害プロセス
- 14. onPause()メソッドの遅延
- 15. Android - onPauseとWidgetLocker
- 16. WidgetLocker onResume onPause
- 17. コールアラートダイヤルonStop/onPause
- 18. android:camera onPause/onResume issue
- 19. Flutter AppでonPause/onResumeを処理する方法は?
- 20. jQueryのdiv #targetのフォーム以外のフォームの選択方法は?
- 21. ページフォルトトラップ後のページ以外のRAMへのページのロード方法
- 22. cassandraのプライマリキー以外のユニークキーの取得方法は?
- 23. 1つの要素以外のボディの選択方法は?
- 24. SQLの最初のレコード以外のレコードをソートする方法
- 25. 流星法シミュレーション以外でコードを実行する方法
- 26. .NETセットアッププロジェクトをMicrosoft以外のものにインストールする方法
- 27. 数字、アルファベット、$ _#以外の文字の検索方法は?
- 28. 空白以外の文字のストリップ方法?
- 29. プライマリ以外の購入アカウントのメールアドレスを取得する方法
- 30. これ以外の場合は、ストアドプロシージャの回避方法
活動が –
onStopがonStop dosent仕事 –
と呼ばれることが保証されていないと私は直接返信する方法を知らないが、ユーザーが5秒以内にアプリを最小化し、閉じた場合何が起こるか試してみてください?タスクは実行されませんか? –