Извините, если у меня здесь длинные проблемы, но это заняло три дня, и я не смог найти решение
В своем приложении я пытаюсь создать что-то вроде Whats Appили мессенджер с другим, что пользователь отправит свое текстовое сообщение в БД MySql на сервере, и моя команда обслуживания клиентов ответит на это сообщение
здесь у меня в двух ситуациях это иногда будет нужно
Первое: , когда приложение не имеет соединения или не может связаться с сервером, приложение будет проверять соединение и пытаться отправлять сообщение каждую 1 минуту.
Второе: когда пользователь успешно отправит сообщение, приложение будет проверять, получен ли ответ в БД или нет, каждые 3 минуты.
, потому что я очень плохо знаком с android и потому что я не могу использовать firebase, потому чтовысокие сборы, если у моего приложения будет много пользователей!Я думаю об использовании сервиса для запуска Alarm с broadcastreceiver для каждой ситуации.
Примечание: обе ситуации никогда не случаются вместе.Таким образом, службы или сигналы тревоги никогда не будут работать вместе.
Если у нас нет соединения, запустится первое, а когда оно закончится, работа закроется и начнется второе.и если у нас есть соединение, запустится только вторая служба.
И я буду контролировать ее с помощью записей sharedPreferences с операторами if в действии вроде: Если значение sharedPreferences имеет значение, запустите службу, еслидругое значение остановите его
проблема здесь ... первая служба и ее аварийный сигнал и приемник успешно работают в указанное время мне нужно
но втораянет Служба только запустится, но аварийный сигнал и приемник не запустятся
Я не знаю, где неправильно я делаю
это код манифеста:
<service
android:name=".SECONDservice"
android:enabled="true"
android:exported="false"/>
<service
android:name=".FIRSTservice"
android:enabled="true"
android:exported="false" />
//This is my FIRST alarm (I changed the names to explain the example)
<receiver
android:name=".FIRSTalarm"
android:process=":remote"/>
<receiver
android:name=".SECONDalarm"
android:process=":remote"/>
//This receiver to check if the phone reboot and the app need to start service again.
<receiver android:name=".AlarmAutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Это первый сервисный код:
public class FIRSTservice extends Service {
FIRSTalarm FIRSTalarm = new FIRSTalarm();
public void onCreate ()
{
super.onCreate();
}
@Override
public int onStartCommand (Intent intent,int flags, int startId) {
FIRSTalarm.setAlarm(this);
return START_STICKY;
...
Первый код ошибки:
public class FIRSTalarm extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent)
{
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyAPP:mytag");
wl.acquire();
// My Check Connection code here
wl.release();
}
public void setAlarm(Context context)
{
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, FIRSTalarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60000, pi); // Millisec * Second * Minute
}
public void cancelAlarm(Context context)
{
Intent intent = new Intent(context, FIRSTalarm.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}
Это второй сервисный код:
public class SECONDservice extends Service {T
SECONDalarm SECONDalarm = new SECONDalarm();
public void onCreate ()
{
super.onCreate();
}
@Override
public int onStartCommand (Intent intent,int flags, int startId) {
SECONDalarm.setAlarm(this);
return START_STICKY;
...
Все вышеперечисленное работает успешно и в указанное время
Проблема в этом Тревоге (не работает)
Второй код тревоги
public class SECONDalarm extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
PowerManager pm2 = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl2 = pm2.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyAPP:mytag2");
wl2.acquire();
// My code.
Toast.makeText(context, "Second Alarm start?!!", Toast.LENGTH_LONG).show(); // For example
wl2.release();
}
public void setAlarm(Context context)
{
AlarmManager am2 =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i2 = new Intent(context, SECONDalarm.class);
PendingIntent pi2 = PendingIntent.getBroadcast(context, 1, i2, 0);
am2.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 180000, pi2);
}
public void cancelAlarm(Context context)
{
Intent intent3 = new Intent(context, SECONDalarm.class);
PendingIntent sender3 = PendingIntent.getBroadcast(context, 1, intent3, 0);
AlarmManager alarmManager3 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager3.cancel(sender3);
}
}
Заранее спасибо