package com.example.song.reactnativeappdemo.preloadreact;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import com.facebook.react.ReactActivity;
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
import com.facebook.react.modules.core.PermissionAwareActivity;
import com.facebook.react.modules.core.PermissionListener;
import javax.annotation.Nullable;
/**
* 预加载Activity基类
* Created by Song on 2017/5/10.
*/
public class PreLoadReactActivity extends ReactActivity implements DefaultHardwareBackBtnHandler, PermissionAwareActivity {
private PreLoadReactDelegate mPreLoadReactDelegate;
protected PreLoadReactActivity() {
mPreLoadReactDelegate = createPreLoadReactDelegate();
}
private PreLoadReactDelegate createPreLoadReactDelegate() {
return new PreLoadReactDelegate(this,getMainComponentName());
}
/**
* 子类重写,返回RN对应的界面组件名称
* @return
*/
protected @Nullable String getMainComponentName() {
return null;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPreLoadReactDelegate.onCreate();
}
@Override
protected void onResume() {
super.onResume();
mPreLoadReactDelegate.onResume();
}
@Override
protected void onPause() {
super.onPause();
mPreLoadReactDelegate.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mPreLoadReactDelegate.onDestroy();
}
@Override
public void onNewIntent(Intent intent) {
if(!mPreLoadReactDelegate.onNewIntent(intent)) {
super.onNewIntent(intent);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
mPreLoadReactDelegate.onActivityResult(requestCode,resultCode,data);
}
@Override
public void onBackPressed() {
if(!mPreLoadReactDelegate.onBackPressed()){
super.onBackPressed();
}
}
@Override
public void invokeDefaultOnBackPressed() {
super.onBackPressed();
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
return mPreLoadReactDelegate.onRNKeyUp(keyCode) || super.onKeyUp(keyCode, event);
}
/**
* 处理权限授权
* @param permissions
* @param requestCode
* @param listener
*/
@Override
public void requestPermissions(String[] permissions, int requestCode, PermissionListener listener) {
mPreLoadReactDelegate.requestPermissions(permissions,requestCode,listener);
}
/**
* 授权结果
* @param requestCode
* @param permissions
* @param grantResults
*/
@Override
public void onRequestPermissionsResult(final int requestCode, final String[] permissions, final int[] grantResults) {
mPreLoadReactDelegate.onRequestPermissionsResult(requestCode,permissions,grantResults);
}
}