我尝试实现录制应用。我对Activity life cycle
有疑问。过了一段时间(5分钟,25分钟,27分钟,......它是不同的)"东西"调用onPause
的{{1}}方法。这对我来说是个问题,因为我有一些版本(Activity
,Camera
,recording
等等。当我用GPS
方法评论所有版本时,一切正常,我可以录制超过60分钟。没人接触设备。
我可以获取信息,谁是调用方onPause方法?
编辑:
我尝试了没有任何逻辑的新创建的应用程序,并且也调用onPause
(20分钟后)。我认为,这个问题已经无法应用。我有设备Huawei Honor 4C,Android 5.1.1和EMUI 3.1。也许设备有一些"看门狗逻辑"。
EDIT2:
我用原生相机应用程序尝试(使用华为)记录,并在15分钟后自动停止。 (SD卡未满,文件不具有> 4GB(FAT32))。
我尝试(使用Nexus)和应用程序运行超过60分钟。没有调用onPause。
已解决:它取决于设备。
我启用了wakeLock(我在清单中获得了WAKE_LOCK权限。):
onPause
结构:
//KEEP SCREEN ON
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyWakelockTag");
wakeLock.acquire();
将Activity (MediaProjectionActivity4 class)
|
| -- Thread of recording video (ScreenRecorder class)
| -- Thread of recording audio (AudioThread class)
| -- Thread of writing to file (SyncFile class)
添加到Log.e(TAG, "onPause()", new RuntimeException());
方法后。 (onPause在12分钟后被调用)。我在没有过滤的情况下添加了LogCat调用onPause的前后日志消息。
onPause
答案 0 :(得分:0)
Android负责调用Activity上的所有生命周期方法。当活动不再接收输入焦点时调用它,这意味着可能在其上显示其他内容,例如对话框。您可以阅读该文档以及其他生命周期方法here。
答案 1 :(得分:0)
可能有几件事负责,但你可以通过让应用程序不要睡觉来阻止调用onPause
。
你可以设置
setKeepScreenOn(true)
在视图中涉及,这也将起作用
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)