Android應用前後臺切換監聽,藉助ActivityLifecycleCallbacks實現
有時需要監聽到應用在前後臺切換並做些處理,一般的做法可能是建立一個BaseActivity,然後全部的Activity都繼承它,在BaseActivity的onStart和onStop中計數去處理。這樣並不是最好的方式,不做詳細介紹,有更好的方式,道理其實差不多,就是藉助ActivityLifecycleCallbacks來實現。
一、寫了個幫助類:
package com.dway.helper;
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
/**
* 應用前後臺狀態監聽幫助類,僅在Application中使用
* Created by dway on 2018/1/30.
*/
public class AppFrontBackHelper {
private OnAppStatusListener mOnAppStatusListener;
public AppFrontBackHelper() {
}
/**
* 註冊狀態監聽,僅在Application中使用
* @param application
* @param listener
*/
public void register(Application application, OnAppStatusListener listener){
mOnAppStatusListener = listener;
application.registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
}
public void unRegister(Application application){
application.unregisterActivityLifecycleCallbacks(activityLifecycleCallbacks);
}
private Application.ActivityLifecycleCallbacks activityLifecycleCallbacks = new Application.ActivityLifecycleCallbacks() {
//開啟的Activity數量統計
private int activityStartCount = 0;
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
activityStartCount++;
//數值從0變到1說明是從後臺切到前臺
if (activityStartCount == 1){
//從後臺切到前臺
if(mOnAppStatusListener != null){
mOnAppStatusListener.onFront();
}
}
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
activityStartCount--;
//數值從1到0說明是從前臺切到後臺
if (activityStartCount == 0){
//從前臺切到後臺
if(mOnAppStatusListener != null){
mOnAppStatusListener.onBack();
}
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
};
public interface OnAppStatusListener{
void onFront();
void onBack();
}
}
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
AppFrontBackHelper helper = new AppFrontBackHelper();
helper.register(MyApp.this, new AppFrontBackHelper.OnAppStatusListener() {
@Override
public void onFront() {
//應用切到前臺處理
}
@Override
public void onBack() {
//應用切到後臺處理
}
});
}
}
也可以直接在Application裡面寫,但寫成幫助類,是為了不用每次都去寫,減輕Application的程式碼量相關文章
- iOS後臺模式藉助位置更新實現iOS模式
- SpringBoot應用篇之藉助Redis實現排行榜功能Spring BootRedis
- 還在用定時器嗎?藉助 CSS 來監聽事件定時器CSS事件
- 藉助Unity AR Foundation構建跨平臺AR應用Unity
- 監聽者模式實戰應用模式
- 藉助雲開發輕鬆實現後臺資料批量匯出丨實戰
- 用CSS實現tab切換CSS
- 藉助Docker搭建JMeter+Grafana+Influxdb監控平臺DockerJMeterGrafanaUX
- Android 實現APP可切換多語言AndroidAPP
- Android——Activity切換炫酷動畫實現Android動畫
- 用純css實現Tab切換CSS
- Android開屏、鎖屏、解鎖監聽實現Android
- Sass應用之實現主題切換
- 用CSS實現Tab頁切換效果CSS
- 北鯤雲超算平臺藉助GPU實現模擬加速GPU
- iphone 4 攝像頭是前後切換iPhone
- React/Vue 實現的前端應用, java/Go/Python 實現的後端應用,前後端分離的應用部署的最佳實踐ReactVue前端JavaGoPython後端
- Lumen 實現 SQL 監聽SQL
- 藉助尾號限行 API 實現限行規則應用的設計思路分析API
- 如何藉助前端表格控制元件實現金融投資分析平臺?前端控制元件
- 低程式碼平臺如何藉助Nginx實現閘道器服務Nginx
- SAP Spartacus 如何藉助env-cmd 實現 B2B 和 B2C 功能啟動的無縫切換
- java鍵盤監聽之視窗監聽的實現Java
- 快應用如何實現密碼明文和密文切換顯示密碼
- Android截圖監聽Android
- 智慧水務藉助物聯網平臺實現效能提升與智慧管理
- 藉助 :has 實現3d輪播圖3D
- App切換到後臺後如何保持持續定位?APP
- 監聽瀏覽器更新URL引數,實現偽SPA單頁面應用瀏覽器
- 直播商城原始碼,Android實現監聽Settings值變化的功能原始碼Android
- 成品直播原始碼,Android實現監聽Settings值變化的功能原始碼Android
- 藉助 Material You 動態配色豐富您的應用
- Android按下返回鍵,將應用退到後臺Android
- Java 藉助ImageMagic實現圖片編輯服務Java
- 用原生JS實現 圖片輪播切換 功能JS
- 使用Broker實現DG切換
- 2018.03.31、Android-ObjectBox-監聽AndroidObject
- JavaFx 監聽剪下板實現(Kotlin)JavaKotlin
- Android逆向之路—為什麼從後臺切換回app又顯示廣告了AndroidAPP