Android监听用户不活跃操作

 @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //XXXXX
  }

//onUserInteraction这个方法,用户操作屏幕就会有反馈
  @Override
  public void onUserInteraction() {
      super.onUserInteraction();
      
//这个方法,抛出一个函数名,和要传的参数
getReactInstanceManager().getCurrentReactContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                  .emit("起个名字", true);
  }

在Android的active里操作如上

在rn中的操作如下

const [userInteractionLastTime, setUserInteractionLastTime] = useState(moment().unix());
const [date, updateDate] = useState(moment().unix()); // 时钟
const doUpdateDate = useCallback(() => updateDate(moment().unix()), []);
  useEffect(() => {
    const timer = setInterval(doUpdateDate, 1000);//data 每秒更新一次
    return () => clearInterval(timer);
  }, [doUpdateDate]);

useEffect(() => {
 // DeviceEventEmitter.addListener 接收的方法
    const userInteraction = DeviceEventEmitter.addListener('同一个函数名', (e) => {
      //这里写操作XXXXX,点击屏幕以后先做什么?再计时去走不活跃的操作
      setUserInteractionLastTime(moment().unix());
     
    });
    return () => userInteraction.remove();//销毁
  }, [依赖]);
  useEffect(() => {
      
      if (date - userInteractionLastTime >n * 60) {
        // 用户不活跃的操作

              } else {
        //...
      }
    
  }, [依赖]);

项目中有用到当用户不活跃的时候,屏幕亮度降到最低,接触rn也才一个月,Android也是,解决这个问题也绕过远路,各种查资料,开始的时候逻辑写在java里,操作rn的时候还用到防抖,在大神指导下都改精简了,分享出来供大家参考,也供我以后查阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值