我有我開始使用的意圖,從一類是Android服務:機器人爲什麼我的服務的run()不工作
Intent i = new Intent(getActivity(), MyService.class);
i.putExtra("Arrived_To_Destination","yes");
getActivity().startService(i);
爲MyService代碼:
public class MyService extends Service {
String arrival_event;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("hi","Inside3");
arrival_event = intent.getStringExtra("Arrived_To_Destination");
Log.d("hi","Inside0" + arrival_event);
WorkerThread dialogthread = new WorkerThread(arrival_event);
Log.d("hi","Inside1");
dialogthread.start();
Log.d("hi","Inside2");
return Service.START_STICKY;
}
private class WorkerThread extends Thread {
String arrival_event;
public WorkerThread(String arrival_event) {
this.arrival_event = arrival_event;
}
@Override
public void run() {
Log.d("hi","Inside4" + arrival_event);
try {
Log.d("hi","Inside5" + arrival_event);
if(arrival_event.equalsIgnoreCase("yes")) {
Log.d("hi","Inside6");
MyFragment mf = new MyFragment();
Log.d("hi","Inside7");
mf.showDialog();
}
} catch (Exception e) {
logger.error("Error: ", e);
}
}
}
}
一旦該服務已啓動,我得到的日誌 -
Inside 0
Inside 1
Inside 2
Inside 3
Inside 4
MyClass的
private void updateLocation(Child currentchild, Location location) {
if (distancetodestination <= 100) {
// the destination reached; 100 is the 100metres, so if the child is within 100m, the arrival event is sent
logger.info("Child arrived");
isAtDesination = true;
child_arrived = true;
MyApi.sendArrival(child);
}
}
}
問題是我沒有進入if
聲明。在MyClass
中,我宣稱child_arrived
爲public static boolean child_arrived;
一旦孩子到達,我將該值設置爲true。爲什麼MyService
未執行if
語句。
的問題應該在你的'MyClass'。你在這裏沒有做任何事情。 – Sufian
當這個MyClass.child_arrived標誌改變了嗎? –
@Sufian我只是在我的服務中檢查它的價值。在MyClass中,當一個事件發生時(孩子到達),我將布爾值設置爲true – Mark023