2012-05-15 29 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

我已经在manifest中提到了我的服务。我得到了这样的警告:'05-15 10:30:02.197:WARN/ActivityManager(69):调度崩溃服务的重新启动com.exercise.AndroidAlarmService/.MyAlarmService in 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