首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用自定义Java中的moveTaskToBack()响应本机模块以编程方式将应用程序移到后台

调用自定义Java中的moveTaskToBack()响应本机模块以编程方式将应用程序移到后台
EN

Stack Overflow用户
提问于 2020-12-14 14:07:26
回答 1查看 151关注 0票数 2

我正在用Java编写一个自定义的ReactiveNative模块,这样我就可以使用back按钮以编程方式将应用程序移到后台。

我使用的是内置的backHandler以响应本机,但它只提供了一种完全退出应用程序的方法,而不是将应用程序移到后台。

实现后,在我的JavaScript代码中,我将在这里调用我的本机模块:

代码语言:javascript
运行
复制
BackHandler.addEventListener('hardwareBackPress', function () {
  /**
   * call native module here
   */
   return true;
  }

使用Android上的back导航按钮将应用程序移到后面的推荐方法是向MainActivity添加一种方法,如这里所描述的那样。但这将导致应用程序总是去背景上的每一个后退按钮按。当我想以编程的方式将应用程序移到后台时,我想要制作我自己的模块,我可以随时调用它。

我面临的困难是如何将此方法从MainActivity转移到自定义模块。

到目前为止,我的代码是:

包:

代码语言:javascript
运行
复制
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;
    }
}

模块:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
...
packages.add(new MoveAppToBackgroundPackage());
...

编译应用程序时遇到的错误是:

MoveAppToBackgroundPackage不是抽象的,也不覆盖抽象方法createViewManagers(ReactApplicationContext )。

如何创建此方法,以便在自定义模块中调用该方法将应用程序移到后台?

EN

Stack Overflow用户

发布于 2020-12-14 14:45:50

好的,我通过更改MoveAppToBackgroundPackage.java来完成这个工作:

代码语言:javascript
运行
复制
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();
    }
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65290420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档