[英]What is the Android PhoneStateListener's Behavior When Called Multiple Times?
我的服務有一個覆蓋 onCellInfoChanged 方法的 PhoneStateListener。 在 Android Studio 上運行時,只要調用該方法,它就會記錄日志。 根據日志,似乎有時會連續調用該方法(日志之間有幾毫秒)。
public class OnCellChangeService extends Service
{
// other field declarations
private PhoneStateListener mPhoneStateListener = new PhoneStateListener()
{
@SuppressLint("DefaultLocale")
@Override
public void onCellInfoChanged(List<CellInfo> cellInfoList)
{
String timeStamp = simpleDateFormat.format(new Date());
List<CellNetwork> cellNetworks = setCellNetwork(cellInfoList);
String networkStrength = "";
int index = 1;
for (CellNetwork cell : cellNetworks)
networkStrength += String.format("%s (%d)%s\n", timeStamp, index++, cell.record());
try {
writer.write(networkStrength);
writer.flush();
Log.d("Phone Listener", "Cell Change");
} catch (Exception e) {
e.printStackTrace();
}
}
};
// rest of service
}
偵聽器所做的只是獲取 cellInfoList,調用另一個方法來獲取一個列表,該列表包含由原始列表子集構成的自定義類對象列表。 它寫入帶有時間戳和來自每個列表對象的其他各種信息的文件。
在執行相同方法的同時再次調用偵聽器的方法時,當前方法是否停止並重新啟動以進行新調用? 它是否在單獨的執行線程中運行? 它是否等待方法完成執行? 如果另一個調用確實停止或干擾了同一方法的執行,我如何實現線程和/或同步以確保在保持順序的同時完全執行每個調用?
PhoneStateListener
的回調都是在主 (UI) 線程上進行的。 因此,在調用下一個回調方法之前,每個回調方法都將運行完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.