Замена устаревшего Localbroadcastmanager Sendbroadcast (намерение) на ThisContext.sendbroadcast (IntentTest)Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Замена устаревшего Localbroadcastmanager Sendbroadcast (намерение) на ThisContext.sendbroadcast (IntentTest)

Сообщение Anonymous »

Я переработаю приложение Android 13 до Android 15. Приложение должно отправлять GPS каждые 10 минут непрерывно.
Первоначально я одновременно стрелял из всех сервисов и позволил им асинхронно вместе, но я обнаружил, что некоторые из услуг не «заглядывают в». Из перевода (успешного или нет) я отправляю трансляцию в приемник, который затем нерегистрирует себя, устанавливает следующий приемник и начинает следующий процесс. Это повторяется до тех пор, пока приложение не достигнет конца цепочки и не заснется, если не будет активности пользователя. Я кратко рассмотрел «LiveData», но я не уверен, что если вместо этого соответствует моим требованиям и, кажется, есть крутая кривая обучения.
Я пытаюсь использовать Froadcastmanager, но я обнаружил, что призыв к приемнику не работает. Приемник: < /p>

Код: Выделить всё

{
@Override
public void onReceive(Context context, Intent intent)
{
thisContext = context;
//
// brute force get a wakelock to make sure we complete everything here before app goes to sleep
//
PowerManager powerManager = (PowerManager)
thisContext.getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"GALR:MyWakelockTag");
wakeLock.acquire();
Log.i(TAG, "At top of GoogleLocationAlarmReceiver" ) ;
ListOfTasksToDo();
}
< /code>
Вот пример некоторого кода, запущенного в "listoftskstodo ()" < /p>
        broadcast_receiver_todo = new BroadcastReceiver()
{
@Override
public void onReceive(Context arg0, Intent intent)
{
String action = intent.getAction();
if (action.equals("NetworkActivityCompletedLocationsTest"))
{
thisContext.unregisterReceiver(broadcast_receiver_todo);
//
// more code here to register the next broadcast receiver
// and to kick off the next service
//
}
}
};
// register the receiver
thisContext.registerReceiver(broadcast_receiver_todo, new IntentFilter("NetworkActivityCompletedLocationsTest"), Context.RECEIVER_NOT_EXPORTED);

//start the service
Intent service = new Intent(thisContext, GoogleLocationServiceV2.class);
thisContext.startForegroundService(service);
In this particular case the app does a lot of work, gathering one gps record, reading the accelerometer, writing the data to an SQLite database, and sending any unsent database records to the web api
Here is some of the code in "SendLocationsToServer" (I have removed many lines of code in an attempt to improve clarity)
public class SendLocationsToServer
{
public boolean SendLocationsToServer(Context context,boolean boolCallBack)
{
LocationAsyncTaskRunner runner = new LocationAsyncTaskRunner();
runner.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");
return true;
}
private class LocationAsyncTaskRunner extends AsyncTask
{
datasource = new LocationDataSource(thisContext);
datasource.open();
List locnList = datasource.getAllLocationsThatNeedSending();
String json = LocnListToJSON(locnList);
for (int i=0;i
Если передача не удается или добивается успеха "localbroadcastnetworkactivitycomplete ()". private void LocalBroadcastNetworkActivityComplete(boolean boolSuccess)
{
if (boolCallBack)
{
Intent intentTest = new Intent("NetworkActivityCompletedLocationsTest");
thisContext.sendBroadcast(intentTest);

}
}
< /code>
Однако я не получаю обратный вызов для Broadcast_receiver_todo.
Кто -нибудь может помочь мне, объяснив, почему трансляция не удается
(и если я даже на правильном пути, иду по этому пути)
note - я предполагаю, что я прочитал, что мне не нужно регистрировать этот приемник). /> Тони < /p>

Подробнее здесь: https://stackoverflow.com/questions/797 ... thiscontex
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»