2016-12-19 3 views
0

У меня есть пользовательский приемник, с которого я передаю данные из своей активности. Назовем этот приемник IntentReceiver().Можно ли передавать намерения без получения пакета?

Как только IntentReceiver() получает намерение, я запускаю другое намерение, которое передает данные службе, которая обрабатывает данные в фоновом режиме. Назовем эту услугу IntentService(). Есть ли способ напрямую передать данные IntentReceiver(), не получая данные из пакета, а затем переупаковывая его как новое намерение? Мой текущий код ниже:

@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle extras = intent.getExtras(); 
    String address = extras.getString("address"); 

    Intent readIntent = new Intent(context, IntentService.class); 
    readIntent.putExtra("address", address); 
    context.startService(readIntent); 
} 

Этот код использует следующее поведение: Намерение -> Bundle -> Намерение

Есть ли способ сделать это: Намерение -> Намерение

+2

Попробуйте 'Intent readIntent = новый Intent (намерение) .setClass (контекст, MessageService.cla сс); ' – CommonsWare

ответ

1

Вместо того, переупаковка в другой связке вы можете использовать один и тот же пристальный объект и дальнейший набор вызовов класса, как описано @CommonsWare как

@Override 
public void onReceive(Context context, Intent intent) { 

    intent.setClass(context, MessageService.class); 
    context.startService(intent); 
}