• 13

對sensation極度的失望~~~

89. wrote:
我不知道你在說哪個平...(恕刪)
另外那個馬克蘇
我哪裡錯你明講
不認同我的言論也請說出理由吧!


是嘛,這樣的口氣,不就好多了

其他的我就不多說,基本上你那一篇文章所謂真多工與假多工,在學理上根本沒有這樣的定義法

89. wrote:
這邊先定義一下真假多工:
假多工:占用記憶體、不占用CPU、程式被關閉(釋放記憶體)後仍可繼續執行
真多工:占用記憶體、占用CPU、程式被關閉(釋放記憶體、CPU)後無法繼續執行


或許你想要用比較簡單的說法來描述你想的東西,但這樣的方式,更令人搞不清楚

因為實際上程式的執行,用你的定義根本難以解釋

「程式被關閉(釋放記憶體)後仍可繼續執行」,我想世界上沒有這種程式

程式要執行,就必須佔用記憶體,無論是RAM還是ROM,還是某個系統資源、暫存器,那都是佔用記憶體,因為系統資源也是記憶體

就算如你下面描述的那一堆狀況,把要執行的東西註冊到子系統去執行,然後應用程式進入休眠的狀態,他還是要佔用記憶體

即使把應用程式關閉,註冊到子系統去執行的東西,一樣會佔用到系統資源,包含記憶體,除非這個項目不執行了

這個定義就我來看,已經是一個錯誤,你叫我如何往下去看你寫得一堆優勢、缺點?

其實簡單來說,iOS是將背景應用程式「暫停」或者直接關閉

而應用程式本身可以利用相當的程序來儲存前一次的狀態,因此即使被關閉,也可以於開啟時回復上一次的狀態

這樣的作法,會不會消耗記憶體?答案是會,也不會

作業系統為了效率,一定會將這些暫存在RAM,然後適當時刻再存入非揮發性記憶體(通常是flash memory)

而被「暫停」的應用程式,一定會佔用一些暫存的RAM,不過系統當然也可以再適當的時機存到flash memory裡

相對iOS,android因為根基於linux,整體的工作模式很接近

但是在手機這樣的嵌入式系統上,資源的問題就相當麻煩

不可否認,google也一直在改善,所以才會幾年之間從1.6到現在2.3甚至3.2都有了,要說好壞,都有,看你怎麼去看他

就我來說,iOS藉由非多工的方式,可以讓單純的操作達到很棒的程度,每一個應用程式都可以作到相當好得契合度,得到最好的照顧,所以也能達到很好的效果

但是遇到像我這種電腦一開機就有幾十個程式在背景執行的人,iOS的架構真的很爛(純就多工架構而言)

雖然沒錯,背景跑了一堆之後,手機就會變慢,操作開始會頓

但是真的要比較,就不能這樣比

因為這兩個的多工架構根本不同

iOS幾乎是全力只跑一個前景程式,去跟背後拖了一堆程式的android比前景順暢度,當然,android一定輸

好了,講太多,該睡覺了,明天還有memory leakage的問題要處理勒
敗家真是無底洞阿~
馬克蘇 wrote:
是嘛,這樣的口氣,不就好多了

其他的我就不多說,基本上你那一篇文章所謂真多工與假多工,在學理上根本沒有這樣的定義法


本來不是打算收費才授課的嗎?
這樣的態度不是好多了?


真多工假多工是一般人講的
我只是引用罷了
iPhone OS 4.0:虛假的多工?聰明的多工?

馬克蘇 wrote:
或許你想要用比較簡單的說法來描述你想的東西,但這樣的方式,更令人搞不清楚

因為實際上程式的執行,用你的定義根本難以解釋

「程式被關閉(釋放記憶體)後仍可繼續執行」,我想世界上沒有這種程式

程式要執行,就必須佔用記憶體,無論是RAM還是ROM,還是某個系統資源、暫存器,那都是佔用記憶體,因為系統資源也是記憶體

就算如你下面描述的那一堆狀況,把要執行的東西註冊到子系統去執行,然後應用程式進入休眠的狀態,他還是要佔用記憶體

即使把應用程式關閉,註冊到子系統去執行的東西,一樣會佔用到系統資源,包含記憶體,除非這個項目不執行了

這個定義就我來看,已經是一個錯誤,你叫我如何往下去看你寫得一堆優勢、缺點?


註冊到Service的程式關閉了
Service還是可以繼續執行程式所託付的工作
所以即是程式被關閉(釋放記憶體)後仍可繼續執行
我沒說Service不耗記憶體(很多時候Service不用也會消耗記憶體,也有些service在雲端不消耗記憶體)
我只說程式關閉後不消耗記憶體(可隨時被系統置換掉)
你說:應用程式進入休眠的狀態,他還是要佔用記憶體,即使把應用程式關閉,註冊到子系統去執行的東西...
你自己證明了你認同「程式被關閉後仍可繼續執行
所以我的定義並沒有錯誤


馬克蘇 wrote:
不可否認,google也一直在改善,所以才會幾年之間從1.6到現在2.3甚至3.2都有了,要說好壞,都有,看你怎麼去看他


Android也開始用Service的方式取代背景程式(雖然那也叫service,不過是程式自己的)了
像是C2DM就是一個例子
這個技術跟iOS的假多工是一樣的


馬克蘇 wrote:
就我來說,iOS藉由非多工的方式,可以讓單純的操作達到很棒的程度,每一個應用程式都可以作到相當好得契合度,得到最好的照顧,所以也能達到很好的效果

但是遇到像我這種電腦一開機就有幾十個程式在背景執行的人,iOS的架構真的很爛(純就多工架構而言)


那Andorid可能也不適合你了
因為Android也開始用類似的架構處理多工
iOS也可以背景幾十個程式在跑
只是是用有效率又省電的Service去跑罷了
如果這架構很爛
Android也不會採用對吧?(像是2.2的C2DM -> much more battery efficient)



馬克蘇 wrote:
雖然沒錯,背景跑了一堆之後,手機就會變慢,操作開始會頓

但是真的要比較,就不能這樣比

因為這兩個的多工架構根本不同

iOS幾乎是全力只跑一個前景程式,去跟背後拖了一堆程式的android比前景順暢度,當然,android一定輸


iOS:純假多工
Android:真多工 + 假多工

的確
雙方架構確實有不同之處
但越來越接近
現在的Android不見得會在背景拖一堆程式了



happy = new year(2011);
89. wrote:
我只說程式關閉後不消耗記憶體(可隨時被系統置換掉)
你說:應用程式進入休眠的狀態,他還是要佔用記憶體,即使把應用程式關閉,註冊到子系統去執行的東西...
你自己證明了你認同「程式被關閉後仍可繼續執行」
所以我的定義並沒有錯誤



我最討厭看這種不使用標準定義名稱,
然後打一場混仗的美其名為"討論"實際上打甚麼都不知道的仗.
最好請用官方的定義說明清楚你到底指的是什麼.

常常很多筆仗連根本的定義都搞混,
卻打得跟真的一樣.




Android 生命週期
http://jjnnykimo.pixnet.net/blog/post/29610930


行程走到[dead] ,這時通常叫"關閉",關閉就不會繼續執行,只有"重新建立"

行程是[stop]/[pause],這時叫"暫停",以pc行為叫"休眠",有重新執行的可能,
表示行程在[stop]時仍占用記憶體,但是[stop]有機會被os回收記憶體,
當然被回收後就等於是kill掉了,對此行程就是[dead]了,下次執行就是"重新建立"
(這裡純粹只看占用記憶體的部分,[stop]需要被喚醒才會重新執行,與[pause]不同)

沒有「程式被關閉後仍可繼續執行」這件事,
前面說的是"暫停"


syntech wrote:
我最討厭看這種不使用標準定義名稱,
然後打一場混仗的美其名為"討論"實際上打甚麼都不知道的仗.
最好請用官方的定義說明清楚你到底指的是什麼.

常常很多筆仗連根本的定義都搞混,
卻打得跟真的一樣.


Android 生命週期
http://jjnnykimo.pixnet.net/blog/post/29610930


自己道理講不清楚
就怪別人沒用標準定義

我不知道你在說我還是馬克蘇
不過你自己的言論也沒有全按照官方定義敘述啊?
所以你也很討厭你自己的文章囉?


syntech wrote:
行程走到[dead] ,這時通常叫"關閉",關閉就不會繼續執行,只有"重新建立"

行程是[stop]/[pause],這時叫"暫停",以pc行為叫"休眠",有重新執行的可能,
表示行程在[stop]時仍占用記憶體,但是[stop]有機會被os回收記憶體,
當然被回收後就等於是kill掉了,對此行程就是[dead]了,下次執行就是"重新建立"

沒有「程式被關閉後仍可繼續執行」這件事,
前面說的是"暫停"


馬克蘇的言論看清楚點!


馬克蘇 wrote:
應用程式進入休眠(暫停)的狀態,他還是要佔用記憶體

即使把應用程式關閉,註冊到子系統去執行的東西,一樣會佔用到系統資源,包含記憶體,除非這個項目不執行了


他已經把「暫停」跟「關閉」分開來討論了
所以馬克蘇說的關閉就是關閉,不是暫停(休眠)!

程式被關閉了
不代表他註冊的service也要被關閉(指iOS而言,Android的機制我不清楚)
在iOS中程式被kill掉了但service繼續跑是很常見的
所以「程式被關閉後仍可繼續執行(service代為執行)」不是什麼奇怪的事



syntech wrote:
多核心本來就是為了多工而設計,
在單核cpu情況下,只能利用context switch 切換不同行程,
但是多核情況下,就還可以切換到另一顆cpu core去執行,
就比較不需要等,
因此多核才會變成一種趨勢,
ipad2 也換成多核,iphone4s/iphone5也要換成多核,


不管用何種定義
你的論點都是錯的
多核心並不是為了多工而存在

我不期待你有承認錯誤的勇氣
但如果你不想討論就安靜點
happy = new year(2011);
"
不過你自己的言論也沒有全按照官方定義敘述啊?
所以你也很討厭你自己的文章囉?
"

一半對,

因為你一言我一語,不適合討論技術問題,
原因你已經知道了,
跟你討論的對方可能用語上與你不一樣,
很容易發生誤解.
最常見就是針對某一篇的某一句用字不精確,或者口氣不佳,
就打了幾十篇的筆仗.
所以我只能尊重你的意見,不一定同意,
當然android程式設計,我能力很淺,
只能給其他人發揮.

還有,我用的定義是 android 的,不是ios 的.

syntech wrote:
一半對,

因為你一言我一語,不適合討論技術問題,
原因你已經知道了,


是的,我知道
原因有二

1.你無法接受異於自己的觀念:
 多核心本是為加速(單一程式),根本不是為多工。
2.你沒有承認錯誤的勇氣



syntech wrote:
跟你討論的對方可能用語上與你不一樣,
很容易發生誤解.
最常見就是針對某一篇的某一句用字不精確,或者口氣不佳,
就打了幾十篇的筆仗.


你可以告訴我這一串討論有誤解什麼字嗎?
目前只看到你誤解了馬克蘇的「關閉」為「暫停」
很可惜這似乎並非用字不精確
而是你判斷錯誤造成的


syntech wrote:
所以我只能尊重你的意見,不一定同意,
當然android程式設計,我能力很淺,
只能給其他人發揮.


所以你還是認為多核心是為了多工囉?
happy = new year(2011);

89. wrote:
本來不是打算收費才授...(恕刪)


如果你還是要用這樣的口氣來回言,隨便你,但我想應該沒有什麼高手會在繼續跟你打混仗了

雖然我也不是什麼高手,只不過在程式堆裡打滾有一些時間而已

既然你還是堅持你自己聽來、自己定義的東西,那你繼續,前面都當我沒說過

但還是強調一點,你這篇的結論,我不認同
敗家真是無底洞阿~
馬克蘇 wrote:
如果你還是要用這樣的口氣來回言,隨便你,但我想應該沒有什麼高手會在繼續跟你打混仗了

雖然我也不是什麼高手,只不過在程式堆裡打滾有一些時間而已


你一開始的口氣好像也不是很好?
要知道一開始口氣不好的人是你!
馬克蘇 wrote:
說實話,你要不要先去唸一唸OS相關的課程再回來討論......

一堆亂七八糟似是而非的東西,講得跟真的一樣勒......


做賊的喊抓賊
「沒有高手會在繼續跟你打混仗」這句話送還給你



馬克蘇 wrote:
既然你還是堅持你自己聽來、自己定義的東西,那你繼續,前面都當我沒說過

但還是強調一點,你這篇的結論,我不認同


你不也是在堅持自己聽來、自己定義的東西?
你已經承認了「程式被關閉後仍可繼續執行」
如果你打錯字,或是我誤解你的意思
你大可提出來

你不認同的理由請說出來
不要為反對而反對


happy = new year(2011);
馬克蘇 wrote:
這個定義就我來看,已經是一個錯誤,你叫我如何往下去看你寫得一堆優勢、缺點?



就我來看
你會這麼難以接受「程式被關閉後仍可繼續執行」是有原因的
因為你可能PC程式寫多了
從來沒遇過「程式被關閉後仍可繼續執行」
所以當下馬上覺得是錯的
是不對的
連文章也不看完
就斷章取義
口出惡言
自以為是地批評人
人家問你理由
你居然要求對方付講師費
好像你很了不起一樣

把工作丟給Service並釋放程式本身的資源
是新一代智慧型手機的革命之一
連Android都是在去年七月才發布這樣新技術
iOS 4也是差不多時間才將這技術用在多工上


你自己也承認了
你覺得程式把工作丟給service
自己休眠、甚至關閉都是可能的
那為何無法承認「程式被關閉後仍可繼續執行」這個概念呢?


很簡單
你跟syntech一樣
你害怕承認錯誤
happy = new year(2011);
iPhone (iOS 3.0開始)上有個「通知」的功能
可以讓程式在背景運作時繼續接收網路上的資訊
神奇的是
通知不但非常的省電
而且程式被關閉後仍可及時的更新資訊
這是如何辦到的呢?


<!--more-->
這邊我節錄了一個中文網站


iPhone的Push(推送通知)功能原理淺析

簡單來說
在沒有系統的輔助下
應用程式(這邊以MSN為例)必須直接跟provider(微軟伺服器)通訊
因此MSN必須在手機上不斷的與微軟伺服器連線
相當消耗資源(浪費電又會讓手機變得很頓)

而Apple做了一個雲端的service
稱之為Apple Push Notification Service (APNS)
在MSN啟動後會對APNS註冊
往後就由APNS來對微軟伺服器連線
因此MSN便可進入休眠/關閉
等到APNS收到微軟伺服器的訊息
就會通知手機上的iOS
iOS就會喚醒/啟動MSN

有計算機或作業系統相關領域知識的人會發現
這個動作就跟輪詢(polling)與中斷(interrupt)非常類似
輪詢就像早期手機上的應用程式
必須時時刻刻探訪伺服器
而中斷就像APNS
只在有必要的時候喚醒對應的程式

以下舉知名通話軟體viber與skype做例子:
iPhone版Viber軟體,以驚人優異功能挑戰Skype


 在此程式關閉時,也能讓用戶收到來電通知,,並可直接撥打,免去了註冊登入的麻煩,更在背景執行時做到不耗電,其貼心的設計及功能,相信將讓Skype倍感壓力!

viber由於採用了APNS
所以viber在背景執行時其實是靠APNS來代理其工作
因此相較於skype
viber幾乎不耗電
也不會佔用CPU拖累其他程式
名符其實的「程式被關閉(釋放記憶體)後仍可繼續執行」!

最後
如何分辨應用程式是否支援APNS
也就是通知呢?
很簡單
如果應用程式開啟通知的地方是在:設定->通知->XXX
那就是支援APNS
反之就不是了
如Skype的通知就是在:設定->Skype
happy = new year(2011);
  • 13
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 13)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?