Java 检查24小时工作是否完成的方法有哪些?

Java 检查24小时工作是否完成的方法有哪些?,java,android,multithreading,alarmmanager,timertask,Java,Android,Multithreading,Alarmmanager,Timertask,在我的申请中,我必须检查24小时是否已完成。 如何使用Thread、TimerTask和Alaram Manager检查这些东西 让我知道如何使用TIMERTASK和线程实现此功能?使用报警管理器: 一个小例子: 这是工作代码。它每10分钟唤醒一次CPU,直到手机关机。 添加到Manifest.xml: ... <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permis

在我的申请中,我必须检查24小时是否已完成。 如何使用Thread、TimerTask和Alaram Manager检查这些东西

让我知道如何使用TIMERTASK和线程实现此功能?

使用报警管理器:

一个小例子: 这是工作代码。它每10分钟唤醒一次CPU,直到手机关机。

添加到Manifest.xml:

...
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
...
<receiver  android:process=":remote" android:name="Alarm"></receiver>
...
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
...
<receiver android:name=".AutoStart">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"></action>
    </intent-filter>
</receiver>
...
从服务设置报警:

package YourPackage;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;

public class YourService extends Service
{
    Alarm alarm = new Alarm();
    public void onCreate()
    {
        super.onCreate();       
    }

    public void onStart(Context context,Intent intent, int startId)
    {
        alarm.SetAlarm(context);
    }

    @Override
    public IBinder onBind(Intent intent) 
    {
        return null;
    }
}
如果要在手机启动时设置重复报警:

package YourPackage;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;

public class YourService extends Service
{
    Alarm alarm = new Alarm();
    public void onCreate()
    {
        super.onCreate();       
    }

    public void onStart(Context context,Intent intent, int startId)
    {
        alarm.SetAlarm(context);
    }

    @Override
    public IBinder onBind(Intent intent) 
    {
        return null;
    }
}
向Manifest.xml添加权限:

...
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
...
<receiver  android:process=":remote" android:name="Alarm"></receiver>
...
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
...
<receiver android:name=".AutoStart">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"></action>
    </intent-filter>
</receiver>
...

警报在API 19上和之后以不同的方式工作,如果您想让它工作,请确保您使用的是API 18及以下版本。否则,您可以从官方文档中包含API 19的方法。如果您想知道自上次检查以来是否已经过了24小时,请从应用程序内部使用SharedReference,存储上次检查通过的时间

    long hourSince1970 = System.currentTimeMillis()/3600000;
    long lastUpdatedHour = MySharedPreference.getTimeLastUpdated(); // defaults to 0

    if(lastUpdatedHour == 0 || hourSince1970-lastUpdatedHour >= 24){
        MySharedPreference.setTimeLastUpdated(hourSince1970);
        // 24 hours passed
        // do your thing
    }

当前时间+24小时怎么样有悬而未决的意图在24小时后被触发。是的,确定24小时是否完成。我怎么做,Dhruti,你能告诉我吗?我可以在24小时结束后发送广播吗?我如何实现这一点?我添加了参考链接。请参考。谢谢。我会查的。。上述拜占庭故障代码检查24小时是否完成。对吧?以上每10分钟就可以了,你可以修改一下。如果您使用wakelocks,请确保您妥善保管。及时释放它们。同时让我知道如何使用TimerTask检查24小时是否已完成。我不建议使用计时器任务,它将使您的CPU在整个时间内处于繁忙状态。这意味着电池的压力。是的,我正在Android应用程序中实现这一点。所以,让我知道,如果我必须检查24小时都完成了,那么你能告诉我我在哪里改变上述代码请?谢谢你的建议,也能理解我的问题。嗨,有人能告诉我如何使用定时器任务和线程来实现这件事吗,因为按照我的要求。