Я хочу выполнить два блока кода в заданное время. Для этого я использую AlarmManager. Два охранных диспетчера сигнализации и два отдельных ожидающих намерения. Я установил 2 сигнала тревоги для запуска (1-й из них срабатывает через 5 секунд, второй после 19 секунд), когда я нажимаю кнопку на экране. Моя проблема - это оба сигнала тревоги, и в результате оба соответствующих блока кода одновременно запускаются одновременно через 5 секунд. Я изменил идентификаторы обоих ожидающих намерений, но я столкнулся с этой проблемой.Как решить несколько аварийных сигналов в одном классе
Ниже мой основной код деятельность Java класса:
public class PerseusAndroid extends Activity implements OnClickListener, OnItemClickListener {
PendingIntent pi,pi2;
AlarmManager amon,amoff;
BroadcastReceiver br,br2;
BluetoothSocket m_btSck;
public static final int idTab2FWD = Menu.FIRST + 1,
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.PreseusAndroid);
setup();
setup2();
}
private void setup()
{
br = new BroadcastReceiver() {
@Override
public void onReceive(Context c, Intent i) {
if (m_btSck != null)
try {
m_btSck.getOutputStream().write('1');
Toast.makeText(getBaseContext(), "Led is ON.. :)", Toast.LENGTH_LONG).show();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
registerReceiver(br, new IntentFilter("net.pocketmagic.perseus"));
final int _id2 = (int) System.currentTimeMillis();
pi = PendingIntent.getBroadcast(this,_id2 , new Intent ("net.pocketmagic.perseus"),PendingIntent.FLAG_CANCEL_CURRENT);
amon = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE));
}
private void setup2()
{
br2 = new BroadcastReceiver() {
@Override
public void onReceive(Context c1, Intent i1) {
if (m_btSck != null)
try {
m_btSck.getOutputStream().write('0');
Toast.makeText(getBaseContext(), "Led is Off.. :)", Toast.LENGTH_LONG).show();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
registerReceiver(br2, new IntentFilter("net.pocketmagic.perseus"));
final int _id = (int) System.currentTimeMillis();
pi2 = PendingIntent.getBroadcast(this, _id, new Intent("net.pocketmagic.perseus"),PendingIntent.FLAG_ONE_SHOT);
amoff = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE));
}
@Override
public void onClick(View v) {
int cmdId = v.getId();
if (cmdId == idTab2FWD)
{
amon.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() +5000, pi);
//amoff.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() +19000, pi2);
}
}
}
}
Поблагодарите Pescis ... он решил проблему .... –