У меня есть простой Android IntentService
:
public class MyService extends IntentService
{
public static final int STATUS_RUNNING = 0;
public static final int STATUS_FINISHED = 1;
public static final int STATUS_ERROR = 2;
....
@Override
protected void onHandleIntent(@NonNull Intent intent)
{
/*Some operations, report progress*/
final ResultReceiver receiver = intent.getParcelableExtra("receiver");
Bundle bundle = new Bundle();
do
{
/*some operations, calculate progress*/
bundle.putInt("progress", (int) progress);
receiver.send(STATUS_PROGRESS, bundle);
}
while(condition);
}
}
Получатель:
public class MyServiceReceiver extends ResultReceiver
{
private Receiver mReceiver;
public MyServiceReceiver(Handler handler)
{
super(handler);
}
public void setReceiver(Receiver receiver)
{
mReceiver = receiver;
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData)
{
if (mReceiver != null)
{
mReceiver.onMyServicesReceiveResult(resultCode, resultData);
}
}
public interface Receiver
{
void onMyServicesReceiveResult(int resultCode, Bundle resultData);
}
}
Чтобы позвонить в службу и получить прогресс, мне нужно запустить службу через Intent
и реализовать Receiver
@Override
public void onMyServiceReceiveResult(int resultCode, Bundle resultData)
{
switch (resultCode)
case MyService.STATUS_PROGRESS:
int progress = resultData.getInt("progress");
String details = resultData.getString("details");
/*Update ui*/
......
}
Теперь я хочу инкапсулировать свой сервис как плагин Flutter. Я полагаю, что могу запустить сервис через метод вызова канала, но как сообщить о прогрессе Flutter gui? Я думаю, мне нужен какой-то обратный вызов / поток для обновления состояния во время работы службы?
Могу ли я получить какой-либо совет, как это сделать?