有關onActivityResult提前呼叫的問題

2021-06-10 06:59:05 字數 1598 閱讀 3720

天準備在自己的遊戲中加入藍芽功能,於是將android sdk sample中的bluetoothchat看了看,發現基本上大部分的**都可以復用,於是乎乾坤大挪移了一番,總算沒有錯誤了,可是在我的nexus上一執行,悲劇了,藍芽明明開啟了,可是卻不能進入到devicelistactivity,看了看**,我是在onactivityresult中判斷藍芽開啟成功後,才會啟動devicelistactivity,難道這麼簡單的**都會出錯嗎?沒辦法只好除錯一下了,一除錯才發現,原來呼叫startactivityforresult(enableintent, request_enable_bluetooth)後,請求開啟藍芽的對話方塊剛彈出來,onactivityresult函式就已經被呼叫了,而且其resultcode還是activity.result_canceled,而當在對話方塊上選擇開啟藍芽後,onactivityresult函式反而不會被呼叫了,我了個擦,這是怎麼回事。

**如下:

private void enablebluetooth() 

private void selectdevice()

private void entervsmode() else }

@override

protected void onactivityresult(int requestcode, int resultcode, intent data) else

case request_connect_device:

// when devicelistactivity returns with a device to connect

if (resultcode ==activity.result_ok)

break;

} }

仔細對比了一下自己的**和bluetoothchat的**,並沒有發現什麼可疑之處,直到比較了一下androidmanifest.xml檔案,才發現我的工程多了一處屬性:android:launchmode="singleinstance",去掉之後一切正常了,後來在google上發現也有同胞發現了類似的問題,他是多加了一句**:intent.addflags(intent.flag_activity_new_task);也會導致一樣的結果,回過頭來翻了翻開發指南,才恍然大悟,裡面有句話是這麼說的:乙個「singleinstance」模式的activity將會是它所在的任務中唯一的activity。如果它啟動了別的activity,那個activity將會依據它自己的載入模式載入到其它的任務中去——如同在intent中設定了flag_activity_new_task 標記一樣的效果。是的,也就是說這兩種情況下,新開啟的activity一定在新的任務(程序)中,和原來的activity不在同一程序中,我想這應該就是onactivityresult函式表現異常的原因吧,看來自己還是基本功不夠紮實啊。

有關Server Mappath解釋

先看圖 1,首先在本機e盤下面建立red資料夾,夾子內繼續建立conn.asp檔案,檔案內容如下 主要除錯三種路徑最後顯示的結果。2,在red資料夾下面建立資料夾database,該夾子內部存放cnbruce.mdb檔案。所以現在可以很肯定的知道資料庫檔案的絕對路徑是 e red database ...

有關於快取

我們使用快取的目的主要有如下幾點 1 減少資料庫查詢次數,降低資料庫負載。2 縮短php執行路徑,降低web前端負載。3 減少webserver的請求數量,降低web前端負載。第一項 比較接近底層,主要做細粒度資料快取,比如快取乙個資料物件,一行記錄等。只有當物件中的屬性或記錄中的字段值發生變化後使...

有關sql注入

大家存在5點誤區 1 sql注入比較難防,需要替換select,delete等一打字元 其實對於字元型替換再多都沒有替換單引號為兩個單引號來的好!對於數字型替換再多都沒有用,一定要型別轉換。2 忽略dropdownlist傳來的東西 其實是不對的,一切客戶端的東西都是不可信任的,select下拉框也...