伊莉討論區
標題:
SQLite問題
[打印本頁]
作者:
jackyo04
時間:
2018-10-2 04:27 PM
標題:
SQLite問題
本帖最後由 jackyo04 於 2018-10-2 04:38 PM 編輯
同一支程式,在程式開啟時會先寫入一筆資料到資料庫中,並執行Service,當我程式關掉時,Service會繼續運作,並讀取剛剛寫入的資料,然後發送通知訊息(Notification),做實驗..
A手機:型號:ASUS Z00ED、Android版本:6.0.1,測試時可正常執行
B手機:HTC Desire 620 dual sim、Android版本:4.4.4,測試時出現"Index 0 requested, with a size of 0"的錯誤訊息
進去看都確定有寫入,謂何後台執行救出錯啦......
資料庫問題解決了,目前是遇到新的問題..一樣是B手機..
利用通知進入A手機,可以正常操作,按home鍵,程式還會存在(存在於執行佇列),但B手機按home程式是直接消失,沒錯,就是直接消失,有進入"onPause"狀態,但就是在執行佇列上找不到,七月不是過了嗎..
有沒有大大可為小弟解惑一下
附上開發時的版本訊息
compileSdkVersion 25
buildToolsVersion '25.0.3'
defaultConfig {
applicationId "xxx.xxx.xx"
minSdkVersion 18
targetSdkVersion 21
複製代碼
作者:
codewice
時間:
2018-10-6 09:25 PM
雖然影響不大,可以檢查一下 onDestroy 有沒有被呼叫。只是按下 Home 鍵 (而且沒有打開開發者模式的 Don't keep activity) 的話,理應不會被呼叫到 onDestroy。若有,可以是個檢查的切入點。
如果「執行佇列」指的是 Recent Screen,它通常會跟 Activity 的啟動參數有關。從產生 PendingIntent 到 Activity Launch,或是 AndroidManifest 的寫法,都會對啟動 Activity 有影響。
比較一下你有沒有下了什麼特別的參數,然後對照官方的文件,看看從 4.4 到 6.0 之間,這些參數的行為會有什麼變化。
作者:
jackyo04
時間:
2018-10-8 08:09 AM
codewice 發表於 2018-10-6 09:25 PM
雖然影響不大,可以檢查一下 onDestroy 有沒有被呼叫。只是按下 Home 鍵 (而且沒有打開開發者模式的 Don't ...
只有那台手機會發生這種情況
我觀察Log是進入onPause狀態,而不是onDestroy,關閉程式才會進入onDestroy,因為我是再做藍芽背景連線,不知道是不是因為版本的關係,但也沒跳出錯誤,只是單純沒有出現在佇列,而且是發生在藍芽連線過後,我確定我Activity跟Service的onDestroy都是令藍芽斷開連線,並釋放資源
我原本以為是資源沒有正常釋放所導致的,所以就去借了同樣版本的手機來測試,發現只有那款手機會出現這種問題
作者:
advantise
時間:
2018-10-8 01:23 PM
應該是程式有錯誤吧, 只有該款手機有問題, 不表示程式沒問題
作者:
codewice
時間:
2018-10-16 01:02 AM
可能要先把問題切小,分開來逐個釐清,會比較容易搞懂發生什麼事情
首先不知道「執行佇列」是什麼意思。我所猜得到最近的意思就是 Recent Screens,通常就是手機上的 Home 鍵旁邊的另一顆鈕,按下去會列出「最近開的哪些 Activity」的那一串。會不會出現在那邊,跟怎麼啟動 Activity 有關,就我所知反倒跟 Activity 怎麼結束的關係不大。
不過,如果在 Activity 結束的同時,又有跟其他 Activity 互動的複雜情況,可能就要釐清一下後面的 Activity Stack / Task Stack 怎麼變化。
如果你說的「執行佇列」完全不是我講的 Recent Screens,那我上面那一串東西可以整個忽略 XDDDD
只要 Activity 失去 focus,就一定會呼叫到 onPause。但是 onDestroy 則不一定,所以,藉由觀察 onDestroy 有無被呼叫,可以判斷程式的邏輯是不是出了什麼問題。(通常我們不會希望 Activity 一直被 destroy,如果按下 Home 總是被 destroy,可能出了問題)(除非程式裡面很明確地總是 finish 自己)
歡迎光臨 伊莉討論區 (http://a401.file-static.com/)
Powered by Discuz!