Android: 判断service运行状态

	public static boolean isServiceRunning(Context context) {
	    ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
	    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
	        if ("com.example.xxxService".equals(service.service.getClassName())) {
	            return true;
	        }
	    }
	    return false;
	}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android PowerManagerService 中包含了一些 API,可帮助开发者监听屏保倒计时。 其中,最主要的 API 是 registerListener(),可以使用它来注册 PowerManager.OnThermalStatusChangedListener 类型的监听器。这个类型的监听器会在屏幕休眠时发出通知,在屏幕唤醒时则不触发。 另外,还可以使用 isScreenOn() 和 isInteractive() 这两个 API 来判断屏幕是否处于点亮状态和交互状态。如果屏幕都是关闭的,那么可以采取类似于下面的实现: ```java PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); if (!powerManager.isInteractive()) { // 屏幕已关闭 } ``` 至于屏保倒计时的监测,可以使用下面这种方式来实现: ```java PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); final long timeToScreenOff = powerManager.getScreenOffTimeout(); final long timeToScreenDim = powerManager.getScreenDimDuration(); final long timeUntilSleep = timeToScreenOff - timeToScreenDim; //屏保倒计时时间 final Handler mHandler = new Handler(Looper.getMainLooper()); final Runnable mRunnable = new Runnable() { @Override public void run() { //判断屏幕是否已关闭 if(!powerManager.isInteractive()){ Log.d(TAG, "屏幕已关闭"); mHandler.removeCallbacks(mRunnable); }else{ //屏保倒计时时间 long time = SystemClock.elapsedRealtime() - powerManager.getLastUserActivityTime(); //如果倒计时时间大于等于屏保倒计时时间,则触发屏保效果 if(time >= timeUntilSleep){ Log.d(TAG, "屏保效果触发"); mHandler.removeCallbacks(mRunnable); } } mHandler.postDelayed(mRunnable, 1000); } }; mRunnable.run(); //开启屏保倒计时的监测 ``` 这段代码的逻辑比较简单,就是每隔一秒检查一次屏幕是否关闭,并计算倒计时时间。如果倒计时时间大于等于屏保倒计时时间,则触发屏保效果。需要注意的是,在屏幕关闭后,该计时器会继续运行,因此需要在屏幕关闭时手动停止计时器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值