2014-09-02 50 views
-4

在我的申請中,我必須檢查24小時是否完成。 如何使用Thread,TimerTask和Alaram Manager來檢查這些事情。什麼是24小時檢查完成的方式?

讓我知道如何使用TIMERTASK和THREAD實現這件事?

+0

怎麼樣'當前時間+ 24 hours'? :) – 2014-09-02 10:11:33

+2

[警報管理器](http://www.javacodegeeks.com/2013/08/android-notification-with-sound-and-icon-tutorial.html),等待意圖在24小時後觸發。 – 2014-09-02 10:12:18

+0

是suresh是否24小時完成。 – Chaow 2014-09-02 10:12:37

回答

0

使用報警管理:

一個小例子:

這是工作的代碼。它每10分鐘喚醒一次CPU,直到電話關閉。

加入的Manifest.xml:

... 
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 
... 
<receiver android:process=":remote" android:name="Alarm"></receiver> 
... 

代碼:從服務

package YourPackage; 
    import android.app.AlarmManager; 
    import android.app.PendingIntent; 
    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.os.PowerManager; 
    import android.widget.Toast; 

    public class Alarm extends BroadcastReceiver 
    {  
     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, ""); 
      wl.acquire(); 

      // Put here YOUR code. 
      Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example 

      wl.release(); 
     } 

    public void SetAlarm(Context context) 
    { 
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, Alarm.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi); // Millisec * Second * Minute 
    } 

    public void CancelAlarm(Context context) 
    { 
     Intent intent = new Intent(context, Alarm.class); 
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     alarmManager.cancel(sender); 
    } 
} 

設置報警:

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.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.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class AutoStart extends BroadcastReceiver 
{ 
    Alarm alarm = new Alarm(); 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) 
     { 
      alarm.SetAlarm(context); 
     } 
    } 
} 

報警以不同的方式上和API 19後的工作,請確保您使用的是API 18以下如果你想這個工作。否則,您可以在官方文檔中包含API 19的方法。

+0

謝謝我會檢查..拜占庭上述代碼檢查24小時的失敗是否完成。對 ? – Chaow 2014-09-02 10:19:18

+0

上面會做每10分鐘,你可以修改它。如果你使用任何東西,請確保你照顧喚醒者。及時釋放它們。 – Skynet 2014-09-02 10:20:53

+0

並且讓我知道如何使用TimerTask檢查24小時是否完成。 – Chaow 2014-09-02 10:22:36

0

如果你想知道24小時是否已經從去年時間的推移,從裏面的應用程序,我通過存儲上一次出現這種檢查通過使用sharedpreference,

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 
    } 
+0

您好任何人都可以請告訴我如何使用 TIMER TASK和THREAD實現這件事,因爲根據我的要求。 – Chaow 2014-09-02 12:07:28

相關問題