사전 정의 된 시간에 두 개의 코드 블록을 실행하려고합니다. 나는 그 목적으로 AlarmManager를 사용하고있다. 2 명의 separte AlarmManagers와 2 개의 별도 보류 인 텐트. 화면의 버튼을 누르면 트리거 할 알람이 두 개 (5 초 후 첫 번째 트리거, 두 번째 19 초 후) 설정되었습니다. 내 문제는 두 가지 경보이며 결과적으로 두 가지 코드 블록이 동시에 5 초 후에 동시에 트리거됩니다. 보류중인 의도의 ID를 변경했지만 아직이 문제에 직면하고 있습니다.해결 방법 단일 클래스에서 여러 개의 알람
다음 내 주요 활동 자바 클래스 코드 :
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 ... 문제가 해결되었습니다 .... –