2015-04-22 183 views
-1

我正在開發一個應用程序,可在後臺計算算法。自應用程序啓動以來,直到它結束。 這是一個跟蹤算法(現在對算法操作原理進一步的解釋)。Android後臺進程 - 從應用程序啓動到關閉

因此,無論用戶在應用程序,點擊,wifi通信消息(已經在應用上完成)上的操作,都需要在應用程序的所有屏幕上計算後臺任務,當算法在後臺運行時需要完成所有操作。

它是一個AsyncTask? 如果不是還有什麼? 應用程序正在運行,現在算法正在特定的屏幕上計算,我想使其成爲後臺進程,而不考慮當前的應用程序屏幕。

一個例子可以理解

PS-進一步發展,不需要如果不需要現在將要討論: 1的下一階段是插入一個指示(虛擬燈泡)到狀態之間變化每次取決於算法結果。 2.該算法從連接到手機的USB設備獲取數據,因爲手機是使用FTDI芯片的主機。

回答

0

這很明顯是您需要的Service - 這正是他們的主要目的 - 在後臺執行長時間運行的操作,無論用戶在前臺使用什麼Activity。你可以閱讀更多關於服務HERE

+0

謝謝!!我會讀一下 –

+0

謝謝!我設法處理它,發佈了新的問題:) –

0

使用廣播reveicer

您需要在清單定義一個接收器操作名稱android.intent.action.BOOT_COMPLETED。

<!-- Start the Service if applicable on boot --> 
<receiver android:name="com.prac.test.ServiceStarter"> 
<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED"/> 
</intent-filter> 

確保還包括已完成的引導權限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

服務使用此做任何事情存在。並使用接收器接收啓動事件重新啓動服務,如果系統啓動..

開機啓動服務的代碼。使服務做你的工作檢查短信或任何你想要的。你需要在MyPersistingService中做你自己的工作。

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class ServiceStarter extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent i = new Intent("com.prac.test.MyPersistingService"); 
     i.setClass(context, MyPersistingService.class); 
     context.startService(i); 
    } 
} 
+0

非常感謝我會嘗試! –

+0

我有一個[鏈接](http://www.learn-android-easily.com/2013/07/bootcompleted-broadcastreceiver-in.html)爲你。這就是我能做的最大。接受答案,如果它幫助.for其他用戶。 –

+0

謝謝尼爾!通過服務,在論壇上發佈了新的問題,如果您也檢查它,將會很感激。你可以看到我在那裏做了什麼服務! –

0

很明顯,你需要在一個獨立的線程中執行你的算法。你必須選擇你想如何做到這一點。

我的建議是服務或IntentService。

https://developer.android.com/training/run-background-service/index.html

你可以在這裏得到一個夢幻般的例子,與在後臺運行的服務和一個TimerTask各執行了一段時間。

App to monitor other apps on android

+0

謝謝!我會閱讀並回來 –

+0

謝謝!我使用服務,Service和IntentService有什麼區別? –

相關問題