2012-05-15 5 views
0

Я хочу установить расписание в своем приложении. Если мое приложение остановлено убийцей задачи приложения, мое приложение автоматически запускается через много секунд после его убийства.установить расписание в android

Мое приложение выглядит так:

public class AlarmServiceDemo extends Activity 
{ 
    /** Called when the activity is first created. */ 
    private PendingIntent pendingIntent; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button buttonStart = (Button)findViewById(R.id.startalarm); 
     Button buttonCancel = (Button)findViewById(R.id.cancelalarm); 

     buttonStart.setOnClickListener(new Button.OnClickListener() 
     { 

      // @Override 
      public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

      Intent myIntent = new Intent(AlarmServiceDemo.this, MyAlarmService.class); 
      pendingIntent = PendingIntent.getService(AlarmServiceDemo.this, 0, myIntent, 0); 

      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

      Calendar calendar = Calendar.getInstance(); 
      calendar.setTimeInMillis(System.currentTimeMillis()); 
      calendar.add(Calendar.SECOND, 10); 
      alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 

      Toast.makeText(AlarmServiceDemo.this, "Start Alarm", Toast.LENGTH_LONG).show(); 
      } 
     }); 

     buttonCancel.setOnClickListener(new Button.OnClickListener() 
     { 

      //@Override 
      public void onClick(View arg0) 
      { 
       // TODO Auto-generated method stub 
       AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
       alarmManager.cancel(pendingIntent); 

       // Tell the user about what we did. 
       Toast.makeText(AlarmServiceDemo.this, "Cancel!", Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 
} 

И это моя служба:

public class MyAlarmService extends Service 
{ 
    @Override 
    public void onCreate() 
    { 
     // TODO Auto-generated method stub 
     Toast.makeText(this, "MyAlarmService.onCreate()", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public IBinder onBind(Intent intent) 
    { 
     // TODO Auto-generated method stub 
     Toast.makeText(this, "MyAlarmService.onBind()", Toast.LENGTH_LONG).show(); 
     return null; 
    } 

    @Override 
    public void onDestroy() 
    { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     Toast.makeText(this, "MyAlarmService.onDestroy()", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onStart(Intent intent, int startId) 
    { 
     // TODO Auto-generated method stub 
     super.onStart(intent, startId); 
     Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public boolean onUnbind(Intent intent) 
    { 
     // TODO Auto-generated method stub 
     Toast.makeText(this, "MyAlarmService.onUnbind()", Toast.LENGTH_LONG).show(); 
     return super.onUnbind(intent); 
    } 
} 

Но мой график не работает. Как я могу это решить?

+0

ли вы упоминаете вашу службу в манифесте? – Rasel

+0

Я упомянул о своей службе в манифесте. Я получил предупреждение, как это '05-15 10: 30: 02.197: WARN/ActivityManager (69): Планирование перезапуска аварийного сервиса com.exercise.AndroidAlarmService/.MyAlarmService в 5000ms ' what это спасибо @Rasel – akubabas

+0

Кажется, что ваш сервис работает, и вы получаете это предупреждение, потому что сервис снова запускается после сбоя – Rasel

ответ

1

вы должны написать, что именно вы имеете в виду, начиная application.If вы хотите начать активность, то вы можете написать

@Override 
public void onStart(Intent intent, int startId) { 
// TODO Auto-generated method stub 
Intent activityIntent = new Intent(context, 
       AlarmServiceDemo.class); 
     activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(activityIntent); 

super.onStart(intent, startId); 

} 
+0

это работает после того, как приложение получило силу за несколько секунд? Я пытаюсь закрыть свою приложение и подождите ... но мое приложение не запускается автоматически. Почему вы @Rasel – akubabas

+0

, что вы пытаетесь сделать? Предположим, вы запланировали запуск своего сервиса через 10 минут, а затем закроете приложение. Таким образом, через 10 минут, когда ваш сервис запустится, он запустит намерение AlarmServiceDemo. Итак, вы увидите, что экран сверху – Rasel

+0

, если мое приложение получило силу близко, я хочу, чтобы мое приложение автоматически запускалось без открытия до ... что-то вроде этого :) – akubabas

Смежные вопросы