簡體   English   中英

Android如何檢測應用暫停和恢復的時間

[英]Android how to detect when app is paused and resumed

我試圖檢測Android應用程序當前是否處於活動狀態,並認為可以通過監聽Ti.Apppauseresume事件來Ti.App 但是,將應用程序推送到后台或放在最前面時,這些事件將永遠不會觸發。

我試着聽這樣的事件:

Ti.App.addEventListener('resume', function(){
    Ti.API.log("resume event triggered");
});
Ti.App.addEventListener('pause', function(){
    Ti.API.log("paused event triggered");
});

這些事件永遠不會被調用。 在搜索之后,我發現其他許多問題也有相同的問題,但是我找不到與最新版本的Appcelerator相關的任何內容。

應該如何“適當地”做到這一點?

您收聽的事件僅是iOS。

如果您的應用只是一項活動,則Android活動的onPause和onResume可能會有所幫助。

通常情況並非如此。 是到目前為止我發現的最好的解決方案。

我開發了一個Android應用程序,該應用程序在活動的onResume調用函數。 所以我認為這是類似的情況。

我使用以下代碼:

$.nameWin.addEventListener('open', function() {
    if (!$.nameWin.activityListenerLoaded) {
        var activity = $.nameWin.activity;
        ['resume'].forEach(function(e) {   
            activity.addEventListener(e, function() {
                //doSomething
            });
        });
       $.nameWin.activityListenerLoaded = true;
   }
});

這樣,您可以在每次活動恢復時調用函數或執行某些操作。

讓我知道。

問候

嘗試收聽主要“活動”中的onPause / onResume事件。

http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Android.Activity

例如:

var main_activity = Ti.Android.currentActivity;
// var intent = main_activity.getIntent();
// var uri = intent.getData();

main_activity.addEventListener('pause', function(e) {
    console.log('ANDROID APP PAUSED');
});
main_activity.addEventListener('resume', function(e) {
    // uri = intent.getData();
    console.log('ANDROID APP RESUMED');
    return;
});

Titanium SDK 3.2.0的工作:

Ti.Android.currentActivity.addEventListener('userleavehint', function(e){
    self.onAppPaused();
});
Ti.Android.currentActivity.addEventListener("newintent",function(){
    self.onAppResumed();
});

我已經使用了bencoding.android.tools模塊很長時間了。

我現在已經為此構建並發布了Hyperloop模塊:

https://github.com/dieskim/Appcelerator.Hyperloop.appPauseResume

跨平台Hyperloop模塊,用於檢測應用程序是否在iOS和Android上暫停或恢復

  • iOS使用核心T.App EventListener暫停和恢復
  • Android通過Hyperloop和setInterval使用Narive Java類來檢查和檢測

例:

// require appPauseResumeModule
var appPauseResume = require('appPauseResume');
// run appPauseResume and add resume and pause callbacks
appPauseResume({pause: function(){
                    Ti.API.info("appPauseResume - pause");
                },
                resume: function(){
                    Ti.API.info("appPauseResume - resume");
                },
                setIntervalTime: 1000,  // Optional - Default: 1000 miliseconds (1 second) 
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM