Я написал простую деятельность, чтобы протестировать службы и приемники-бракасты и службу, чтобы согласиться с ней. Чтобы узнать, работает ли он, я настроил Toast в основном действии, который будет показан после вызова метода OnReceive(). Но для жизни я не могу заставить это работать.Android: широковещательный приемник и проблемы с обслуживанием
Эти коды:
общественный класс ServicesAndBroadcastIntentActivity расширяет активность {
private Toast test;
private Intent intent;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
intent = new Intent(this,serviceD.class);
test = Toast.makeText(this,"Test",Toast.LENGTH_LONG);
test.setGravity(Gravity.CENTER,0,0);
}
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
test.setText((intent.getStringExtra("EXTRA_MSG")));
test.show();
}
};
@Override
public void onResume(){
super.onResume();
startService(intent);
registerReceiver(broadcastReceiver, new IntentFilter(serviceD.BROADCAST_ACTION));
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(broadcastReceiver);
stopService(intent);
}
}
общественного класса Serviced расширяет службы {
private Intent intent;
static final String BROADCAST_ACTION = "com.mejg.ServicesAndBroadcastIntent";
public void onCreate() {
super.onCreate();
intent = new Intent(BROADCAST_ACTION);
}
public void onStart(){
intent.putExtra("EXTRA_MSG","hola");
sendBroadcast(intent);
stopSelf();
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
Я сделал то, что вы предлагали, начиная службу с кнопки и регистрируя приемник перед запуском службы, и он, похоже, не работает. Любое другое предложение? –
@rodkarom: Не с головы. FWIW, вот пример использования «LocalBroadcastManager» с почти идентичной настройкой на ваш (хотя я использую «TextView» вместо «Toast»). Вы можете временно избавиться от 'setGravity()', чтобы упростить «Toast», в случае, если это как-то испортилось - я редко меняю силу «Тоста». – CommonsWare
Еще одно сомнение ... Нужно ли объявлять фильтр намерений в моем AndroidManifest.xml? –