0

アプリケーションでスケジュールを設定したい。アプリケーションがアプリケーション タスク キラーによって停止された場合、アプリケーションが強制終了されてから数秒後にアプリケーションが自動的に実行されます。

私のアプリケーションは次のようなものです:

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);
    }
}

しかし、私のスケジュールはうまくいきません。どうすれば解決できますか?

4

1 に答える 1

1

アプリケーションを開始するという意味を正確に記述する必要があります。アクティビティを開始する場合は、次のように記述できます。

@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);

}
于 2012-05-15T04:47:04.100 に答える