如何管理本机生命周期

时间:2017-04-10 12:58:05

标签: react-native react-native-android

我知道当我们需要一个nativeUI组件时,我们需要覆盖函数 getName() createViewInstance(ThemedReactContext context)但是当我使用关于地图的依赖时。 API需要我使用像这样的组件

    @Override  
protected void onDestroy() {  
    super.onDestroy();  
    //在activity执行onDestroy时执行mMapView.onDestroy(), 
    mMapView.onDestroy();  
}  
@Override  
protected void onResume() {  
    super.onResume();  
    //在activity执行onResume时执行mMapView. onResume (), 
    mMapView.onResume();  
    }  
@Override  
protected void onPause() {  
    super.onPause();  
    //在activity执行onPause时执行mMapView. onPause (),  
    mMapView.onPause();  
    }  
}

我重写了getetName() createViewInstance(ThemedReactContext context)这样的功能

    @Override
public String getName() {
    return REACT_CLASS;
}

@Override
public MapView createViewInstance(ThemedReactContext context) {
        final ThemedReactContext mapContext = context;
        bdMapViewInstance = new MapView(context);
        bdMapViewInstance.getMap().setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                ShopResponseInfo shopResponseInfo = (ShopResponseInfo) marker.getExtraInfo().getSerializable(INDENTIFY);
                if(shopResponseInfo != null){
                    String id = shopResponseInfo.getShop_id() + "";
                    String shop_name = shopResponseInfo.getShop_name() + "";
                    onReceiveNativeEvent(mapContext,bdMapViewInstance,id,shop_name);
                }
                return true;
            }
        });
    return bdMapViewInstance;

}

最后我的应用程序中存在一些性能问题。我不知道这是否会影响我的应用程序的性能。我不知道如何满足官方建议。我不知道如何控制android的nativeUI组件的生命周期。非常感谢。

2 个答案:

答案 0 :(得分:1)

您可以在createViewInstance中监听此类活动生命周期。您可能希望跟踪侦听器并根据您跟踪实例来适当删除它们。

LifecycleEventListener lifecycleEventListener = new LifecycleEventListener() {
  @Override
  public void onHostResume() {

  }

  @Override
  public void onHostPause() {

  }

  @Override
  public void onHostDestroy() {

  }
};
getReactApplicationContext().addLifecycleEventListener(lifecycleEventListener);

答案 1 :(得分:0)

RN文档中说明的TestModule示例。 PS不要忘记使用implements LifecycleEventListener

package com.testpackage;

import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.LifecycleEventListener;

import java.util.Map;
import java.util.HashMap;

public class TestModule extends ReactContextBaseJavaModule implements LifecycleEventListener {

    public TestModule(ReactApplicationContext reactContext) {
        super(reactContext);

        reactContext.addLifecycleEventListener(this);

    }

    @Override
    public void onHostResume() {

    }

    @Override
    public void onHostPause() {

     }

     @Override
     public void onHostDestroy() {

     }
}