我想将下载功能实现到我现有的应用程序中,但是它引发了异常,我无法弄清原因。
我重新创建了一个新的flutter项目并安装了flutter_downloader插件,它可以正常工作,但是当我在现有应用程序中以相同方式实现该功能时,就会抛出错误。
堆栈跟踪在这里:
2019-11-02 13:11:44.655 13280-13280/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.app, PID: 13280
java.lang.IllegalStateException: registrar.activity() must not be null
at co.paystack.flutterpaystack.FlutterPaystackPlugin$Companion.registerWith(FlutterPaystackPlugin.kt:18)
at co.paystack.flutterpaystack.FlutterPaystackPlugin.registerWith(Unknown Source:2)
at io.flutter.plugins.GeneratedPluginRegistrant.registerWith(GeneratedPluginRegistrant.java:30)
at com.example.app.FlutterCustomApp.registerWith(FlutterCustomApp.java:10)
at vn.hunghd.flutterdownloader.DownloadWorker.startBackgroundIsolate(DownloadWorker.java:124)
at vn.hunghd.flutterdownloader.DownloadWorker.access$000(DownloadWorker.java:59)
at vn.hunghd.flutterdownloader.DownloadWorker$1.run(DownloadWorker.java:97)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7000)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
这是我的自定义应用程序类:
public class FlutterCustomApp extends FlutterApplication implements PluginRegistry.PluginRegistrantCallback {
@Override
public void registerWith(PluginRegistry registry) {
GeneratedPluginRegistrant.registerWith(registry);
}
}
我也在AndroidManifest.xml
文件中指定了类名。
但是,当我启动下载任务时,会引发上述异常并且应用程序崩溃了。我仍然不知道为什么会这样。
答案 0 :(得分:0)
由于需要flutter引擎与依赖android生命周期的本机android通信(如果您查看FlutterActivity),因此插件的注册表应开始在活动上注册,而不是在应用程序类上注册
如果没有其他特定问题或原因(如JNI初始化或Flutter引擎相关的配置更改),则应在第一个Splash Activity或BaseActivity onCreate上调用插件注册:
class MainActivity: FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this)
}
}