如何在flutter中使用工作管理器运行后台进程?

2024-01-08

我想使用 Flutter Workmanager,我在 .kt 中做了引用的配置,如下所示

package com.example.mybackprocess

import be.tramckrijte.workmanager.WorkmanagerPlugin
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugins.GeneratedPluginRegistrant

class App : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
WorkmanagerPlugin.setPluginRegistrantCallback(this)
}

override fun registerWith(reg: PluginRegistry?) {
GeneratedPluginRegistrant.registerWith(reg)
}
}

我已将 android:name 更改为

android:name=".App"

但它给了我这个错误:

Launching lib\main.dart on G3212 in debug mode...
e:E:\mybackprocess\android\app\src\main\kotlin\com\example\mybackprocess\MainActivity.kt: (15, 48): 
Type mismatch: inferred type is PluginRegistry? but FlutterEngine was expected

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more 
log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org

BUILD FAILED in 55s
Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

文档有问题。你可以尝试用这个

不要删除你的.MainActivity.kt,而是删除你的.App class.

MainActivity.kt

package your_package_name

import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity 
import io.flutter.embedding.engine.FlutterEngine    
import io.flutter.plugins.GeneratedPluginRegistrant 

class MainActivity: FlutterActivity() { 
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {    
        GeneratedPluginRegistrant.registerWith(flutterEngine);  
    }   
}

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="your_package_name">

    <uses-permission android:name="android.permission.INTERNET" />

    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->
    <application android:label="xxx" android:usesCleartextTraffic="true" android:icon="@mipmap/ic_launcher">
        <activity android:name=".MainActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
            <!-- This keeps the window background of the activity showing
                 until Flutter renders its first frame. It can be removed if
                 there is no splash screen (such as the default splash screen
                 defined in @style/LaunchTheme). -->
            <!-- <meta-data android:name="io.flutter.app.android.SplashScreenUntilFirstFrame" android:value="true" /> -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>

            <intent-filter>
                <action android:name="FLUTTER_NOTIFICATION_CLICK"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>

            <meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/launch_background" />

            <!-- Theme to apply as soon as Flutter begins rendering frames -->
            <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" />

        </activity>

        <meta-data android:name="flutterEmbedding" android:value="2" />

    </application>
</manifest>

样式.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <!-- Show a splash screen on the activity. Automatically removed when
             Flutter draws its first frame -->
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>

    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
    <item name="android:windowBackground">@drawable/launch_background</item>
</style>
</resources>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在flutter中使用工作管理器运行后台进程? 的相关文章

随机推荐

  • 无法覆盖 __call__ 的实现

    以此为例 class Foo object def init self msg self msg msg def call self return self msg foo Foo hello print foo Prints hello
  • 使用 Telnet 或 SSH 与 Perl 从本地计算机在远程计算机上运行 perl 脚本

    我想使用 telnet 或 ssh 在远程计算机上运行 Perl 脚本 该脚本位于我的本地主机上 如何执行此操作 有人可以帮我解决这个问题吗 如果由于某种原因您不想将脚本复制到远程主机然后运行它 您可以通过 stdin 将脚本发送到 Per
  • .NET 3.5 中的 FormsAuthentication.Timeout.TotalMinutes

    我刚刚使用 FormsAuthentication 我想要 Web 配置中表单身份验证标记的超时属性值 在 4 0 中 我们可以通过 FormsAuthentication Timeout TotalMinutes 获取此信息 参考 For
  • socket.io + node.js 的内存泄漏

    我的 Node js 应用程序似乎存在内存泄漏 我很快就构建了它 而且我的 JavaScript 不太强大 所以这可能很容易 我已经对它做了一些堆转储 它是字符串object 内存泄漏 速度约为每 5 分钟 1MB 我扩展了String 它
  • PHP MySQL 计数查询结果是字符串,而不是整数

    我有以下 MySQL 查询和 PHP 代码来格式化Count结果为单个数组 equalDimensions query SELECT allEqual AS COL1 COUNT AS imgCount FROM SELECT imgHei
  • Go 和 PHP 中的 SHA256 给出不同的结果

    我正在尝试通过 HTTP 将 SHA256 哈希字符串发送到服务器 我想通过执行 SHA256 哈希并验证两个匹配来进行身份验证 出于测试目的 我使用相同的字符串 但是我的结果不匹配 这可能是我的 base64 encode 调用的默认编码
  • 为什么我在这个 devise_group 调用中收到 NoMethodError 错误?

    我正在使用 devise 3 5 2 ruby 2 2 2 rails 4 2 3 class ApplicationController lt ActionController Base Prevent CSRF attacks by r
  • Application.Exit() 不起作用

    static void Main Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application Exit App
  • PyMongo 与 Django 的 MongoEngine

    对于我的一个项目 我更喜欢使用Django Mongodb 我为什么要使用蒙戈引擎 但不仅仅是PyMongo 有什么优点 使用 PyMongo 查询给出的结果是已准备好的对象 不是吗 那么 MongoEngine 的目的是什么 这是一个老问
  • 在 Terraform 中使用“execute”插值声明变量

    我想将一个变量的子字符串声明给另一个变量 我测试了使用 terraform 控制台获取子字符串 gt echo element split 10 250 3 0 24 2 terraform console gt 3 我的子网是 10 25
  • 更改树莓派蓝牙设备名称?

    我正在尝试将树莓派的蓝牙名称更改为其他名称 IP 地址 以便当我扫描并配对我的 Android 设备时 它将将此 IP 视为设备名称 它工作过一次 但随后又返回显示为 raspberrypi 0 我已经尝试了 hciconfig set n
  • Android Lollipop 成为设备管理员不起作用

    我正在跟进本指南 http developer android com guide topics admin device admin html关于如何让我的应用程序请求成为设备管理员 这适用于任何 4 x android 版本的任何手机
  • 为什么构建 liblzma 失败并显示“找不到库”?

    我从他们的网站安装了 mingw 我安装了带有 iconv 和 intl msys 和所有其他东西的开发人员包 I run configure进而make install 链接时 它打印 src liblzma liblzma la lin
  • 从某个节点打开事件查看器

    打开显示特定节点详细信息的 Windows 事件查看器的命令是什么 例如 如果我只是使用eventvwr命令 它会打开选 择根节点的 UI 我想Application打开时选择的节点或任何其他节点 可以通过编程方式配置吗 Thanks 要查
  • 如何在 Flask-SQLAlchemy 中同时设置一对多和一对一关系?

    我试图在 Flask SQLAlchemy 中同时创建一对一和一对多关系 我想实现这个目标 一个群组有许多成员和一名管理员 这是我所做的 class Group db Model id db Column db Integer primar
  • iPhone - 将 CTFont 转换为 UIFont?

    我正在尝试将 CTFont 转换为 UIFont 而不丢失任何样式和属性 例如 字体名称 字体大小 字体颜色 下划线 Bold Italic etc CTFontRef ctFont NSString fontName NSString C
  • CSS:如何让输入字段自动调整其宽度

    我有一个名为包装器的 div 它使用 margin 属性水平居中 该包装器的宽度是固定的 在该包装器内 我有一个 a 标签 后跟一个输入字段 我正在寻找的是让输入字段的宽度自动调整为右侧的剩余宽度 直到包装器的边框 我想避免以像素为单位定义
  • JavaFX TableView 中的属性绑定不起作用

    我跟踪了许多链接并找到了在表视图中显示复选框的解决方案 但我无法更改表视图中复选框的值 我关注的链接 如何在 JavaFX 中将复选框添加到 TableView https stackoverflow com questions 72176
  • 更改 3D 绘图的垂直 (z) 轴的位置

    我正在 Python 中使用 Matplotlib 绘制一些 3D 曲面图 并注意到一个恼人的现象 根据我设置视点 相机位置 的方式 垂直 z 轴在左侧和右侧之间移动 下面是两个例子 示例 1 轴左 http i imagebanana c
  • 如何在flutter中使用工作管理器运行后台进程?

    我想使用 Flutter Workmanager 我在 kt 中做了引用的配置 如下所示 package com example mybackprocess import be tramckrijte workmanager Workman