创建Android的一个预定服务(Create a Scheduled service in and

2019-06-27 13:30发布

我需要用java的android创建调度服务。 我已经尝试了一些代码,但所有的时间建立它不运行应用程序之后。 我的逻辑很简单,我希望做一个服务,以检查在蓝牙文件夹路径的文件是否存在,如果该文件是存在的,所以这项服务将运行其他应用程序,我需要这个与运行每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);
        }
    } 
}

可能有人请帮助我。

Answer 1:

有两种方法可以实现您的要求。

  • 的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 );


文章来源: Create a Scheduled service in android