第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何檢測(cè)Android應(yīng)用程序何時(shí)到達(dá)后臺(tái)并返回到前臺(tái)

如何檢測(cè)Android應(yīng)用程序何時(shí)到達(dá)后臺(tái)并返回到前臺(tái)

慕標(biāo)琳琳 2019-06-19 15:31:01
如何檢測(cè)Android應(yīng)用程序何時(shí)到達(dá)后臺(tái)并返回到前臺(tái)我正在嘗試編寫一個(gè)應(yīng)用程序,當(dāng)它在經(jīng)過一段時(shí)間后返回到前臺(tái)時(shí),它會(huì)做一些特定的事情。是否有一種方法可以檢測(cè)應(yīng)用程序何時(shí)被發(fā)送到后臺(tái)或被帶到前臺(tái)?
查看完整描述

3 回答

?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊

這個(gè)onPause()onResume()當(dāng)應(yīng)用程序被帶到后臺(tái)并再次進(jìn)入前臺(tái)時(shí),將調(diào)用方法。但是,當(dāng)應(yīng)用程序第一次啟動(dòng)時(shí),以及在其被殺死之前,它們也會(huì)被調(diào)用。你可以讀到更多活動(dòng).

在后臺(tái)或前臺(tái)沒有直接獲取應(yīng)用程序狀態(tài)的方法,但即使是我也面臨過這個(gè)問題,并找到了解決方案onWindowFocusChangedonStop.

欲知更多詳情,請(qǐng)到此查詢。Android:用于檢測(cè)Android應(yīng)用程序何時(shí)進(jìn)入后臺(tái)并返回到前臺(tái)的解決方案,而不需要getRunningTask或getRunningAppProcess.


查看完整回答
反對(duì) 回復(fù) 2019-06-19
?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊

我就是這樣解決這個(gè)問題的。它的工作前提是,在活動(dòng)轉(zhuǎn)換之間使用時(shí)間引用最有可能提供充分的證據(jù),證明應(yīng)用程序已經(jīng)“背景”或沒有。

首先,我使用了一個(gè)android.app.Application實(shí)例(讓我們稱它為MyApplication),它有一個(gè)計(jì)時(shí)器、一個(gè)TimerTask、一個(gè)常量來表示從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的轉(zhuǎn)換所需要的最大毫秒數(shù)(我使用的值是2s),以及一個(gè)布爾值來表示應(yīng)用程序是否“在后臺(tái)”:

public class MyApplication extends Application {

    private Timer mActivityTransitionTimer;
    private TimerTask mActivityTransitionTimerTask;
    public boolean wasInBackground;
    private final long MAX_ACTIVITY_TRANSITION_TIME_MS = 2000;
    ...

應(yīng)用程序還提供了啟動(dòng)和停止計(jì)時(shí)器/任務(wù)的兩種方法:

public void startActivityTransitionTimer() {
    this.mActivityTransitionTimer = new Timer();
    this.mActivityTransitionTimerTask = new TimerTask() {
        public void run() {
            MyApplication.this.wasInBackground = true;
        }
    };

    this.mActivityTransitionTimer.schedule(mActivityTransitionTimerTask,
                                           MAX_ACTIVITY_TRANSITION_TIME_MS);}public void stopActivityTransitionTimer() {
    if (this.mActivityTransitionTimerTask != null) {
        this.mActivityTransitionTimerTask.cancel();
    }

    if (this.mActivityTransitionTimer != null) {
        this.mActivityTransitionTimer.cancel();
    }

    this.wasInBackground = false;}

該解決方案的最后一部分是從所有活動(dòng)的onResume()和onPace()事件中添加對(duì)這些方法的每個(gè)調(diào)用,或者最好在所有具體活動(dòng)繼承的基本活動(dòng)中添加一個(gè)調(diào)用:

@Overridepublic void onResume(){
    super.onResume();

    MyApplication myApp = (MyApplication)this.getApplication();
    if (myApp.wasInBackground)
    {
        //Do specific came-here-from-background code
    }

    myApp.stopActivityTransitionTimer();}@Overridepublic void onPause(){
    super.onPause();
    ((MyApplication)this.getApplication()).startActivityTransitionTimer();}

因此,在用戶只是在應(yīng)用程序的活動(dòng)之間導(dǎo)航的情況下,離開活動(dòng)的onPace()啟動(dòng)計(jì)時(shí)器,但是幾乎立即被輸入的新活動(dòng)在達(dá)到最大轉(zhuǎn)換時(shí)間之前取消了計(jì)時(shí)器。所以黃蜂地會(huì)是假的.

另一方面,當(dāng)活動(dòng)從發(fā)射器、設(shè)備喚醒、電話結(jié)束等到達(dá)前臺(tái)時(shí),很可能是在此事件之前執(zhí)行的計(jì)時(shí)器任務(wù),因此黃蜂地被設(shè)置為千真萬確.


查看完整回答
反對(duì) 回復(fù) 2019-06-19
  • 3 回答
  • 0 關(guān)注
  • 1610 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)