我知道Stackoverflow上有很多关于这个主题的帖子,我已经阅读了每一个,但我仍然很困惑,非常抱歉,但我觉得我应该发布这个。
当应用程序运行时,接收器没有真正发生任何事情,好像他们没有收到任何东西
我的服务:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
int timerValue = pv.getTimerValues();
aCounter = new CountDownTimer((timerValue), 1000) { // set to
// timerValue
// later
public void onTick(long millisUntilFinished) {
int minutes, seconds;
String sSeconds, sMinutes, toSend;
seconds = (int) (millisUntilFinished / 1000) % 60;
minutes = (int) ((millisUntilFinished / (1000 * 60)) % 60);
sSeconds = Integer.toString(seconds);
sMinutes = Integer.toString(minutes);
toSend = (sMinutes + ":" + sSeconds);
sendMessage(toSend);
countDownCheck();
}
public void onFinish() {
MediaPlayer dingeffect = MediaPlayer.create(
getApplicationContext(), R.raw.timerfinished);
// mPlayer0.stop();
try {
dingeffect.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dingeffect.start();
// Intent intent2 = new Intent(ServiceTest.this, Meditate.class);
//startActivity(intent2);
sendMessage("finished");
}
};
aCounter.start();
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
private void sendMessage(String send) {
Intent intent1 = new Intent("countdowntimer");
// You can also include some extra data.
intent1.putExtra("message1", send);
sendBroadcast(intent1);
}
我的接收活动: 在onCreate里面:
registerReceiver(mMessageReceiver1, new IntentFilter("countdowntimer"));
final Intent countDownService = new Intent(Meditate2.this,
ServiceTest.class);
startService(countDownService);
和我的广播接收者在同一个活动中
private BroadcastReceiver mMessageReceiver1 = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("message1");
setTimer(message);
}
};
在清单中,我已经宣布了服务:
<service android:name=".ServiceTest"></service>
奇怪的是,它在我修复了其他东西后停止工作,所以我真的不知道为什么它不是。求救!
答案 0 :(得分:0)
您的广播接收器应该知道要听取什么意图。 使用intentFilter注册您的接收器,这样可以听取您的倒计时器意图:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("countdowntimer");
activity.registerReceiver(this, intentFilter);
答案 1 :(得分:0)
我会告诉你代码和我的(工作)代码有什么不同。 在onCreate上的活动:
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver1, new IntentFilter("countdowntimer"));
在onDestroy活动中:
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver1);
在sendMessage中:
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
我不知道这是否会产生很大的不同,但我使用了LocalBroadcastManager.getInstance
。