Android 线程在屏幕仍然锁定时启动,要防止

Android 线程在屏幕仍然锁定时启动,要防止,android,multithreading,view,Android,Multithreading,View,我有一个布局,它有一些控制按钮,在水平布局的底部有一个自定义视图MainView。MainView启动一个ControllerThread,该线程反过来启动其他线程。我的目标是在屏幕解锁并且用户明确看到水平布局之前不启动ControllerThread 从今以后,控制器线程是 我首先天真地将_ctrlr.start放在MainView的构造函数中。然后我把它放在了onfinish中,但是在屏幕解锁之前会调用它。我最后一次尝试是将其放置在onWindowVisibilityChanged中,并在v

我有一个布局,它有一些控制按钮,在水平布局的底部有一个自定义视图MainView。MainView启动一个ControllerThread,该线程反过来启动其他线程。我的目标是在屏幕解锁并且用户明确看到水平布局之前不启动ControllerThread

从今以后,控制器线程是

我首先天真地将_ctrlr.start放在MainView的构造函数中。然后我把它放在了onfinish中,但是在屏幕解锁之前会调用它。我最后一次尝试是将其放置在onWindowVisibilityChanged中,并在visibility设置为VISIBLE时启动控制器,但即使在解锁屏幕之前也会调用该命令。我假设这些函数是在屏幕解锁之前调用的,因为_ctrlr被确认正在运行


视图中是否有检查屏幕是否锁定/解锁的方法?或者我必须使用KeyguardManager吗?

根据blackbelt的建议,我通过在MainView中创建一个公共类来将启动线程的调用移动到控制器,该类将在调用控制器时启动控制器。在主活动的OnResume中,我调用:


在解锁屏幕后,直到应用程序在模拟器中实际启动,ControllerThread才会启动。

i由于MVC,您应该将ControllerThread放在膨胀tour Main视图的活动中。然后,您可以使用onResume/onPause回调来启动/停止线程当您说屏幕已锁定时,您的意思是用户在锁定屏幕上还是用户看不到您的视图?用户在锁定屏幕上
((MainView) findViewById(R.id.mainView)).startController();