Android如何检测应用暂停和恢复的时间

时间:2016-02-15 15:35:11

标签: android appcelerator appcelerator-titanium

我正在尝试检测Android应用当前是否处于活动状态,并认为我可以通过收听pause的{​​{1}}和resume事件来执行此操作。但是,当应用程序被推送到后台或被带到前面时,这些事件永远不会触发。

我试图听取这样的事件:

Ti.App

永远不会调用这些事件。在搜索之后,我发现很多其他人都有同样的问题,但我找不到任何与最新版Appcelerator相关的内容。

如何做到这一点"正确"?

5 个答案:

答案 0 :(得分:4)

您收听的事件仅限iOS。

如果您的应用只是一项活动,则Android活动的onPause和onResume可能会有所帮助。

通常情况并非如此。 This是我迄今为止找到的最佳解决方案。

答案 1 :(得分:0)

我开发了一个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;
   }
});

通过这种方式,您可以在每次活动恢复时调用函数或执行某些操作。

让我知道。

此致

答案 2 :(得分:0)

尝试在主“活动”中收听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;
});

答案 3 :(得分:0)

从Titanium SDK 3.2.0开始工作:

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

答案 4 :(得分:0)

我长期以来一直在使用volatile模块。

我现在已经构建并发布了Hyperloop模块:

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

跨平台Hyperloop模块,用于检测iOS和Android上的app是暂停还是恢复

  • iOS使用核心T.App EventListeners暂停和恢复
  • Android通过Hyperloop使用Narive Java Classes,使用setInterval检查和检测

示例:

bencoding.android.tools