привет всем, это мой первый вопрос здесь, поэтому я надеюсь получить ответ. У меня есть приложение для Android, и с помощью FCM я могу получать уведомления на переднем плане, в фоновом режиме и при закрытии приложения.
public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {
final String jobTag="copyDb";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
String notification_title = remoteMessage.getNotification().getTitle();
String notification_message = remoteMessage.getNotification().getBody();
String click_action = remoteMessage.getNotification().getClickAction();
String from_user_id = remoteMessage.getData().get("from_user_id");
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(notification_title)
.setContentText(notification_message);
Intent resultIntent = new Intent(click_action);
resultIntent.putExtra("user_id", from_user_id);
PendingIntent resultPendingIntent =
getActivity(
this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
int mNotificationId = (int) System.currentTimeMillis();
NotificationManager mNotifyMgr =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotifyMgr.notify(mNotificationId, mBuilder.build());
}
Я хочу запустить фоновую работу, когда придет уведомление, я использовал firebase jobDispatcher:
SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("fromUser", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("fromUser",from_user_id);
editor.commit();
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(getApplicationContext()));
Job myJob = dispatcher.newJobBuilder()
.setService(jobDispatcher.class) // the JobService that will be called
.setTag(jobTag)
.build();
dispatcher.mustSchedule(myJob);
Но это не работает, пока приложение находится в фоновом режиме или убито, но я получаю уведомление.
я попытался переместить фоновую задачу в FCM onMessageReceived и также получил ту же проблему.
есть ли способ запустить фоновую задачу при получении уведомления??
необычная благодарность за хороший ответ :))
AsyncTask
и выполнить загрузку или обработку некоторых данных? - person Yupi   schedule 09.01.2018postExecute
изAsyncTask
остановите службы. Я думаю, это может сработать - person Yupi   schedule 10.01.2018AsyncTask
не равноServices
. Например,Services
можно вызывать или запускать, даже если приложение убито ОС. Посмотрите: developer.android.com/guide/components/services.html - person Yupi   schedule 10.01.2018