I would like to make my Flutter application to run always in background. With android, we have to create a Service that runs always in background. I don\'t find something ab
BroadcastReceiver
class beside MainActivity
in android dir.MainActivity.java
and main.dart
and AndroidManifest.xml
like thisMyReceiver
package com.example.flutter_broadcastreceiver_alarmmanager_repeat;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MainActivity.callFlutter();
}
}
MainActivity
package com.example.flutter_broadcastreceiver_alarmmanager_repeat;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.view.FlutterView;
public class MainActivity extends FlutterActivity {
private PendingIntent pendingIntent;
private AlarmManager alarmManager;
private static FlutterView flutterView;
private static final String CHANNEL = "com.tarazgroup";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
flutterView=getFlutterView();
GeneratedPluginRegistrant.registerWith(this);
Intent intent = new Intent(this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 1019662, intent, 0);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000, pendingIntent);
}
@Override
protected void onDestroy() {
super.onDestroy();
alarmManager.cancel(pendingIntent);
}
static void callFlutter(){
MethodChannel methodChannel=new MethodChannel(flutterView, CHANNEL);
methodChannel.invokeMethod("I say hello every minute!!","");
}
}
main.dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
static const methodChannel = const MethodChannel('com.tarazgroup');
_MyHomePageState() {
methodChannel.setMethodCallHandler((call) {
print(call.method);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
),
body: Container()
);
}
}
AndroidManifest.xml
your flutter code calls avery 1 min. even your app minimized or switch to another app or screen off.