Activity 1 --send data--> Service1
^
|
Open app--------------------
^
|
Activity 2------------------
這意味着活性1將數據發送到一個服務1.服務1與在onStartCommand()
返回正在運行的後臺服務是START_STICKY
的圖。目前,我正在使用putExtra()
函數來交換數據。的Service 1
String data=null;
if(intent.hasExtra("data")){
Bundle bundle = intent.getExtras();
if(!bundle.getString("data").equals(null)){
data= bundle.getString("data");
}
}
else
data="0";
我用hasExtra
函數來檢查data
是否被設置或
在Activity 1
Intent start_service = new Intent(getContext(), ConnectService.class);
start_service.putExtra("data", "123");
getContext().startService(start_service);
在onStartCommand():和在服務我將如下步驟getExtra數據不。在我的目的中,案例1是服務1可以從Activity 1
接收數據。在案例2中,如果我們不從活動1開始,例如,當我清理所有正在運行的應用程序時,由於START_STICKY
,電話將自動打開服務1,服務1將設置數據等於「0」。因此,我的問題來自第二種情況,應用程序崩潰,因爲它無法檢查Extra是否存在。
所致:顯示java.lang.NullPointerException:嘗試上的空對象引用
如何可以調用虛擬方法 '布爾android.content.Intent.hasExtra(java.lang.String中)'我解決了這個問題?感謝所有
試試這個,http://stackoverflow.com/questions/38265993/timer-inside-android-service –
謝謝但是有些情況下,服務可以從其他Activity重啓,而不是Activity 1.所以你的解決方案無法解決 – Jame