4

私はJavaを使用してAndroidでスケジュールサービスを作成する必要があります。いくつかのコードを試しましたが、アプリケーションをビルドした後は常に実行されません。私のロジックは単純です。Bluetoothフォルダパスにファイルが存在するかどうかを確認するサービスを作成したいと思います。このファイルが存在する場合、このサービスは別のアプリケーションを実行するため、2分ごとに実行されるスケジュールでこれが必要です。

今までは素晴らしいことでしたが、今はエラーがありますThe method startActivity(Intent) is undefined for the type MyTimerTask。私はこのコードを試しました...

public class MyTimerTask extends TimerTask {
    java.io.File file = new java.io.File("/mnt/sdcard/Bluetooth/1.txt");

    public void run(){ 
        if (file.exists()) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.setComponent(new ComponentName("com.package.address","com.package.address.MainActivity"));
            startActivity(intent);
        }
    } 
}

誰かがこれを手伝ってくれませんか。

4

1 に答える 1

9

要件を達成するには2つの方法があります。

  • TimerTask
  • アラームマネージャークラス

    TimerTaskには、指定された特定の時間間隔でアクティビティを繰り返すメソッドがあります。次のサンプル例を見てください。

    Timer timer; 
    MyTimerTask timerTask; 
    
    timer = new Timer(); 
    timerTask = new MyTimerTask();
    timer.schedule ( timerTask, startingInterval, repeatingInterval );
    
    private class MyTimerTask extends TimerTask 
    {
         public void run()
         { 
            ...
            // Repetitive Activity goes here
         } 
    }
    

    AlarmManager同じことをTimerTaskしますが、タスクを実行するために占有するメモリが少ないためです。

    public class AlarmReceiver extends BroadcastReceiver 
    {
        @Override
        public void onReceive(Context context, Intent intent) 
        {
            try 
            {
                Bundle bundle = intent.getExtras();
                String message = bundle.getString("alarm_message");
                Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
            } 
            catch (Exception e) 
            {
                 Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show();
     e.printStackTrace();
            }
       }
    }
    

AlarmClass、

private static Intent alarmIntent = null;
private static PendingIntent pendingIntent = null;
private static AlarmManager alarmManager = null;

    // OnCreate()
    alarmIntent = new Intent ( null, AlarmReceiver.class );
    pendingIntent = PendingIntent.getBroadcast( this.getApplicationContext(), 234324243, alarmIntent, 0 );
alarmManager = ( AlarmManager ) getSystemService( ALARM_SERVICE );
    alarmManager.setRepeating( AlarmManager.RTC_WAKEUP, ( uploadInterval * 1000 ),( uploadInterval * 1000 ), pendingIntent );
于 2012-08-30T02:34:57.743 に答える