我正在用Java编写一个自定义的ReactiveNative模块,这样我就可以使用back按钮以编程方式将应用程序移到后台。
我使用的是内置的backHandler以响应本机,但它只提供了一种完全退出应用程序的方法,而不是将应用程序移到后台。
实现后,在我的JavaScript代码中,我将在这里调用我的本机模块:
BackHandler.addEventListener('hardwareBackPress', function () {
/**
* call native module here
*/
return true;
}使用Android上的back导航按钮将应用程序移到后面的推荐方法是向MainActivity添加一种方法,如这里所描述的那样。但这将导致应用程序总是去背景上的每一个后退按钮按。当我想以编程的方式将应用程序移到后台时,我想要制作我自己的模块,我可以随时调用它。
我面临的困难是如何将此方法从MainActivity转移到自定义模块。
到目前为止,我的代码是:
包:
package com.myApp;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import java.util.ArrayList;
import java.util.List;
public class MoveAppToBackgroundPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new MoveAppToBackground(reactContext));
return modules;
}
}模块:
package com.myApp;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReactContext;
public class MoveAppToBackground extends ReactContextBaseJavaModule {
@Override
public String getName() {
return "MoveAppToBackground";
}
private ReactContext mReactContext;
public MoveAppToBackground(ReactApplicationContext reactContext) {
super(reactContext);
mReactContext = reactContext;
}
/* React Methods */
@ReactMethod
public void MoveToBackground() {
Activity activity = mReactContext.getCurrentActivity();
activity.moveTaskToBack(true);
}
}MainApplication:
...
packages.add(new MoveAppToBackgroundPackage());
...编译应用程序时遇到的错误是:
MoveAppToBackgroundPackage不是抽象的,也不覆盖抽象方法createViewManagers(ReactApplicationContext )。
如何创建此方法,以便在自定义模块中调用该方法将应用程序移到后台?
发布于 2020-12-14 14:45:50
好的,我通过更改MoveAppToBackgroundPackage.java来完成这个工作:
package com.mtApp
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Arrays;
public class MoveAppToBackgroundPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new MoveAppToBackground(reactContext));
return modules;
}
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Arrays.asList();
}
}https://stackoverflow.com/questions/65290420
复制相似问题