当前位置: 首页 > 面试题库 >

在Android中创建预定服务

裴彦
2023-03-14
问题内容

我需要使用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);
        }
    } 
}

有人可以帮我这个忙。


问题答案:

有两种方法可以满足您的要求。

  • 计时器任务
  • 警报管理器类

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


 类似资料:
  • 有人能帮我创建balow图像剪切搜索栏吗?我已经用自定义拇指和分段文本浏览过SeekBar,还有SeekBar拇指位置问题 但是我没有成功创建我的客户搜索栏,请帮助我

  • 我是Android的新手。我想在android中创建后台服务来监听在FireStore中创建的新文档。我已经准备好了所有的代码,但是服务一次又一次地启动。 > 你能告诉我该怎么做才能开始服务一次吗。每当我打开应用程序时,它就会显示>>listener附加在控制台中。我希望它只执行一次,并保持它在后台运行。 FireStoreActivityListener.java signup.java

  • 我正在创建一个物联网设备,用户可以设置一个特定的时间来触发物联网设备的动作。下午01:00,空调自动启动。我正在使用谷歌云平台。我检查了GCP中的Cron作业,它在特定的时间或指定的间隔触发特定的URL。因为我的触发时间存储在datastore中,所以我必须在每分钟后使用cron job查询数据库,在那里我可以编写逻辑,如果时间匹配就触发操作。但总会有59秒的滞后,在最坏的情况下,否则我可以在每秒

  • 问题内容: 我目前有一项使用以下活动在活动的onCreate方法中启动的服务: 现在,我需要能够在按下按钮时停止该服务,并在再次按下按钮时再次重新启动它,但是我不确定如何停止该服务并在onCreate方法之外重新启动它。 我想我需要以不同于当前正在执行的方式启动该服务?但是我不确定最好的方法。 我曾在android中查看过stop服务,但是他们启动服务的方法似乎在onCreate中不起作用。 我的

  • 问题内容: 我希望创建如下的json: 在android中。这是我到目前为止的内容: 谁能帮我? 问题答案: 您可以在主JSON对象中放置另一个JSON对象:

  • 问题内容: 在Java中,如何创建在构建时填充的最终Set?我想做以下事情: 但是我不知道Java的正确语法。 问题答案: 试试这个成语: