2011-04-25 64 views
0

我正在編寫一個應用程序,需要每5秒做一些工作,如果這些計算超過閾值,應該啓動一個意圖加載新的活動(或者如果活動可能由流程本身發起)。使用AsyncTask和服務檢查閾值每5秒運行一次報警

到目前爲止,我正在採用Wrox的專業Android 2應用程序開發手冊中的方法,該手冊規定刷新數據使用AlarmManager和AsyncTask。 http://www.wrox.com/WileyCDA/WroxTitle/Professional-Android-2-Application-Development.productCd-0470565527,descCd-DOWNLOAD.html - >示例項目 - >第九章地震4

這是我到目前爲止有:

  1. Activity.onCreate從推出服務

  2. onCreate方法啓動一個服務集報警PendingIntent參數(尚未啓動它)。

  3. 啓動的服務onStartCommand創建報警並創建的AsyncTask(含執行)

  4. AsynchTask.doInBackground做了一些計算,如果閾值已經過去了,它廣播一個新的意圖,並試圖阻止警報,如果閾值未通過,則不做任何事情。

  5. 該服務從AsyncTask的onPostExecute停止。

  6. 一個BroadcastReceiver的方法的onReceive處理來自2的PendingIntent)並啓動這樣的服務:

    意圖startIntent =新意圖(上下文,MyService.class);

    context.startService(startIntent);

眼下報警不停止,我不太確定這是處理這種需求的最佳架構,你可以分享任何經驗? 我知道其他選項,如IntentService,處理程序的使用情況,定時器,但這也是一種乾淨的方式,但是......它的性能高嗎? 最好的問候。吉列爾莫。

回答

1

看看這個類在Java

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html

我認爲你可以使用!

+0

我知道我可以使用Thread類(來自Android)。但我不知道什麼是最適合我需要的東西。爲什麼使用線程比使用AsyncTask更好? – polonskyg 2011-04-25 21:19:59

+0

不知道這是否有幫助,但本文比較了Android中的各種任務執行機制:http://techtej.blogspot.com/2011/03/android-thread-constructspart-4.html – advantej 2011-04-25 21:28:38

0

使用可讓您啓動鬧鐘的PendingIntent,您可以在AlarmManager中調用cancel()並停止。

+0

如果通過閾值,我打電話給: alarms =(AlarmManager)getSystemService(Context.ALARM_SERVICE); String ALARM_ACTION = CrashAlarmReceiver.ACTION_CHECK_CRASH_ALARM; Intent intentToCancel = new Intent(ALARM_ACTION); alarmIntent = PendingIntent.getBroadcast(params [0],0,intentToCancel,0); alarms.cancel(alarmIntent); from doInBackground,但它不停止。 – polonskyg 2011-04-25 20:59:14