• 8

android甚麼時候才可解決"軟體再背景偷偷自動開啟"的問題!?


SBAAK wrote:
記憶體本來就是拿來用的..
Android底層是Linux,本來就會留一部分記憶體事先載入一些有優先權限的APP
以備可以快速被喚醒/啟動..


不懂別裝懂啦~
你知道嗎? 如果每個程式都說自己想要常駐~ 那記憶體吃滿了該怎麼辦?
不是每個人的手機都是"機皇"、"旗艦"! 您懂嗎? 再說你所說的那些優先權限APP都是重要系統服務!
幾乎都在kernel space或是開機時就決定好的系統程式~ 跟樓主說的一般AP是不同檔次的

另外你家裡電腦要是一開機就一海票程式就在開啟別跟我說速度不會變慢呢~
再說真要常駐的話是不是讓我們user選擇會比較好?
理想的背景程式或服務是平常不在背景跑,而是設置一些喚醒事件,然後由作業系統統一監視所有事件。當事件發生時,由系統啟動程式來處理。事件類型有時間、位置改變、網路訊息、音樂播放進度等。有了這些類型的事件,很多程式不須要持續在背景跑,就能做到定時做某事、記錄位置、接收網路訊息、播放音樂等絕大多數的背景應用。iOS和Android都支援這種模式。例如Viber,你可以用task manager確認把它砍了。再送個訊息給它,它一樣接的到。

Android跟iOS不同的是,它允許像是Windows service或是Unix daemon這樣的背景服務。程式會一直在背景跑,自己負責去監視所有它在意的事件然後處理。這樣的缺點很明顯,它會持續佔用資源。它的優點是可以處理系統不支援的事件,例如直接做TCP/IP的socket運作。它跟傳統Unix或Windows的程式開發習慣相近,反應時間更及時。Android 2.2版以前不支援網路訊息的事件通知(C2DM),所以MSN之類的app只能用傳統的方式自行在背景做TCP/IP連線。2.2版以後雖然支援了,很多app為了相容性或即時性還是維持了常駐的做法。

CHOID wrote:
那可以解釋一下..2...(恕刪)

可以問另一個問題嗎?..
當越多app占用RAM會不會越耗電?
如一個RAM裡被10個APP占用跟另一個被20個APP占用..
20個的會不會比較耗電?
因為小弟覺得背後有越多程式在跑..照理來說應該也會耗掉比較多的電
但小弟對這塊真的不了解...
還請各位高手...可以解惑一下....謝謝!!
耗電量應該和佔用記憶體多少無關,而是和CPU使用率有關。多10個app佔著,如果那些app不要設計的太差,多耗的電量應該是小到可以忽略。

kingka wrote:
可以問另一個問題嗎?...(恕刪)

Aleax wrote:
這裡我來說明一下,為...(恕刪)


哇 這篇是我看過寫的最棒的記憶體管理介紹文章了,也解釋了為什麼有些軟體會自動偷偷執行的原因了。

可惜不能幫你評分,如果可以的話,希望有機會看到大大的專門講android/ios記憶體管理的文章

有一點我想請問的是,雖然我可以理解linux架構管理記憶體的方式,但實際上當我用512MB RAM手機的時候,記憶體如果只有60MB左右沒有被佔用時,通常手機都會整個很頓,而且就架構而言,如果記憶體都會自動回收不佔用資源,那理論上1GB/512MB的記憶體使用起來應該沒有差別,但實務上1GB會比512MB順太多了。我是以同等級的CPU來比較的。謝謝
ESQ wrote:
實在狠不喜歡如此如果...(恕刪)


所以版大在開啟電腦後,會進入工作管理員把所有非版大自行開啟的程序全部關閉嗎???
雖然版大說iOS, windows phone沒有這些問題~
但實際上是沒有?還是看不到?
android本身是一個開放性的軟體,所以如果懂的人就可以對它做很多的事情,而且難度並不算大,
所以android就算直接讓你看那些軟體正在執行對它來說也不是問題~因為他本來就是開放的
iOS, windows phone這些~你可能靠取得權限後~再灌某些軟體~就依舊會看到你所謂的偷偷開啟了~

其實要解決偷偷開啟的問題最簡單的方法就是.......拿掉功能~別讓使用者看到就好啦!!!
LKK1981 wrote:
不懂別裝懂啦~
你知道嗎? 如果每個程式都說自己想要常駐~ 那記憶體吃滿了該怎麼辦?
不是每個人的手機都是"機皇"、"旗艦"! 您懂嗎? 再說你所說的那些優先權限APP都是重要系統服務!...(恕刪)


您的觀念是錯誤的,
每個APP都有辦法設定自己的優先權限,例如我們可以在
Thread或Runnable接口中的run方法首句加入

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); //
設定在後台的優先級別

可以控制的有:
int THREAD_PRIORITY_AUDIO //控制音樂使用的優先級
int THREAD_PRIORITY_BACKGROUND //標準後台級
int THREAD_PRIORITY_DISPLAY //主要是改善UI的刷新
int THREAD_PRIORITY_LESS_FAVORABLE //優先級低於favorable
int THREAD_PRIORITY_MORE_FAVORABLE //優先級高於favorable
int THREAD_PRIORITY_URGENT_DISPLAY //設定較重要的優先級別

其他還有很多優先級的設定應用,就不贅談了..

你說的記憶體吃滿了怎麼辦..?
原則上不會有這種事發生,你沒有把我整篇文章看完
我說了系統留給APP可應用的空間大概只有內建記憶體的20~30%不等
前面已經被APP占滿後,其他的則排不進去了,並不會繼續吃系統記憶體40%~50&60%~100%...
懂嗎?

不是旗艦機沒1GB也沒關係
因為能利用的空間是以百分比計,如果機種只有512MB,那所剩空間大約只有128MB上下..
這128MB塞滿就塞滿了..其他的就沒份

但是若部分大型遊戲,可能光載入啟動就會花掉128MB以上
那你的低階手機就會變得超緩慢,甚至重啟的狀況~

系統的重要服務,大多是最高優先級別沒錯,但真正重要的,是常駐在另外的那70%的記憶體中
而不是跟第三方APP搶那剩餘的30%..
例如"鬧鐘"服務,當初Android 1.5的時候,很多廠商還不知道要將鬧鐘設為最高級別~
導致鬧鐘服務動態漂浮在剩餘Cache中..當時用了TaskKill還會誤把鬧鐘殺掉,導致鬧鐘不響造成很多災情..
後來廠商都學乖了..知道把鬧鐘常駐在系統中,你怎麼刪也刪不掉..

這樣明白嗎?
我有一個問題想請問!
為甚麼ios可以用較低的硬體 跑上述那些自動開啟的聊天軟體或其他程式 同時又跑大型遊戲 還不會lag
而安卓做不到?!

kiner wrote:
但實際上當我用512MB RAM手機的時候,記憶體如果只有60MB左右沒有被佔用時,通常手機都會整個很頓,而且就架構而言,如果記憶體都會自動回收不佔用資源,那理論上1GB/512MB的記憶體使用起來應該沒有差別,但實務上1GB會比512MB順太多了。...(恕刪)


你的想法"理論上"沒有錯
但實際上現在一個較大型的APP(或寫得很爛的APP),經常性載入就會耗費超過60MB..
這時已經超過動態的浮動空間全容量了..

所以還是會導致低階機整個變超慢..

主要原因是因為,比例上是這樣分配
但實際上還是"不夠用"
話說

倒目前為止只用過一款androZIP 可以隨傳隨到.
按退出,連程序都會乖乖關...雖然現在換掉了

有這設計的app好像很少? 至少知名熱門的似乎沒有..
  • 8
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 8)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?