我使用前臺服務創建應用程序。該服務在另一個進程和線程中運行。服務中的應用程序變量
Application類有一個數組並且具有公共方法getArray。服務可以訪問應用程序和調用方法getArray。
應用程序啓動,數組填充和服務啓動。 如果應用程序更改數組,則服務會返回在啓動應用程序中創建的數組。
我如何更新服務中的數組?
的服務:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(mThread != null)
mThread.interrupt();
mApplication = (Application) getApplication();
mTaskManager = mApplication.getTaskManager();
TaskArray lTasks = mTaskManager.getAll();
// always return same size
Log.d(mLogTag, "onStartCommand " + lTasks.size());
createThread();
mThread.start();
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
結果:
我發現越來越的一個應用對象的副本,在我的應用程序的原因。這是因爲getApplicationContext()返回當前進程的單個全局應用程序對象的上下文。
爲每個進程創建一個應用程序對象的副本。
所以你的問題是你如何可以從服務更新arraylist值? –
您可以在使用Messenger的客戶端應用程序和遠程服務之間進行雙向溝通 –
Piyush Kukadiya,您對Messenger的含義是什麼? –