Hitendra Rathod
Hitendra Rathod

Reputation: 11

Crash in some device while using background service

I used flutter background service plug-in.Sometimes I getting crash. I don't know why it is happening? is there any solution?? I tried it by many ways..It's very critical.. I am using flutter_background_service 1.0.4 as background services as well as foreground services.

Fatal Exception: android.app.RemoteServiceException: Context.startForegroundService() did not 
then call Service.startForeground(): ServiceRecord{67fd813 u0 
com.example.sms_scheduler/id.flutter.flutter_background_service.BackgroundService}
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)
   at android.os.Handler.dispatchMessage(Handler.java:106)
   at android.os.Looper.loop(Looper.java:176)
   at android.app.ActivityThread.main(ActivityThread.java:6651)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)

This is my Code !!

void main() async{
await initializeService();
  runApp(const MyApp());
}
Future<void> initializeService() async {
    final service = FlutterBackgroundService();
    await service.configure(
      androidConfiguration: AndroidConfiguration(
        onStart: onStart,
        autoStart: true,
        isForegroundMode: true,
      ),
      iosConfiguration: IosConfiguration(
        autoStart: true,
        onForeground: onStart,
        onBackground: onIosBackground,
      ),
    );
}
void onIosBackground() {
  WidgetsFlutterBinding.ensureInitialized();
  print('FLUTTER BACKGROUND FETCH');
}
void onStart() {
    if (Platform.isAndroid){PathProviderAndroid.registerWith();}
    else if (Platform.isIOS){PathProviderIOS.registerWith();}
    if (Platform.isIOS) FlutterBackgroundServiceIOS.registerWith();
    if (Platform.isAndroid) FlutterBackgroundServiceAndroid.registerWith();
    final service = FlutterBackgroundService();
    service.onDataReceived.listen((event) {
        if (event!["action"] == "setAsForeground") {
          service.setAsForegroundService();
          return;
        }
        if (event["action"] == "setAsBackground") {
          service.setAsBackgroundService();
        }
        if (event["action"] == "stopService") {
          service.stopService();
        }
      });
    service.setAsBackgroundService();
    Timer.periodic(const Duration(seconds: 05), (timer) async {
      service.sendData(
          {
            "final_sms": sendFinalSMS(),
          }
      );
    });
}

Upvotes: 0

Views: 1334

Answers (1)

Uncle Roger
Uncle Roger

Reputation: 183

Why don't you use this

try{
//code that may throw an exception
}catch(Exception_class_Name ref){}

Upvotes: 0

Related Questions