2013-04-26 2 views
0

У меня есть активность и я использую намерение, которое я называю определенной частью другого приложения. То есть позволяет сказать, что мое приложение А имеет активность 1, из которого я называю деятельность 1 из приложения B, которые я не имею никакого контроля над использованием следующего механизмаAndroid: время измерения, потраченное на другое приложение, из текущей активности

Activity A 
Intent intent = null; 
     try { 
      intent = Intent.parseUri("URI://sample/100/1000", 
        Intent.URI_INTENT_SCHEME); 
     } catch (URISyntaxException e) { 
      --ERROR 

     } 

     startActivity(intent); 

Когда я нажимаю кнопку назад он возвращается к Действие 1 моего приложения A. Поскольку я теряю контроль, я не могу понять, как я могу зафиксировать количество времени, которое пользователь потратил на активность из приложения B. Есть ли способ захватить это? Я знаю, если пользователь перейдет на главный экран из этого приложения, мои данные будут искажены, но я в порядке с этим. Но используя системное время в секундах, я могу захватить время?

+0

Запустить таймер, когда OnPause так называемой активности называется, то в вашем onresume просто уволить его и принять к сведению его счет. –

+0

Да, я подумал об этом - я не знаю, почему, но мой onPause и onResume, кажется, звонят, прежде чем покинуть мое приложение, а не после. Я просто не могу понять, почему это происходит – Slartibartfast

+0

Итак, вместо onpause, попробуйте в onstop, если это работает, то на самом деле он совершенно непредсказуем, какой метод жизненного цикла может внезапно вступить в силу в реальном сценарии. –

ответ

0

Может быть, вы можете использовать «startActivityForResult». Таким образом, вы можете написать «onActivityResult» и проверить, сколько времени прошло с момента вашего намерения.

Подробнее об этом можно найти здесь: How to manage `startActivityForResult` on Android?

+0

Но как я это делаю, когда я звоню в другое приложение? Я не имею никакого контроля над тем, что происходит в другом приложении. Я могу просто позвонить и как только элемент управления вернется. – Slartibartfast

+0

Итак, скажем, вы фиксируете системное время перед тем, как сделать «startActivityForResult», используя что-то вроде этого: long start = System.currentTimeInMillis() ;. И затем, в onActivityResult(), который вызывается однажды, управление приходит к вашей деятельности, вы можете снова взять время и выполнить разницу с временем начала. Вы можете сохранить время в переменной-члене Activity A, которая начала Activity B. Итак, теперь вы знаете системное время, когда активность B была запущена и когда она была закончена, и вы можете найти продолжительность. Будет ли это работать на вас? –

Смежные вопросы