① 安卓能偽後台嗎
不能。
既然說到「偽後台」那必然也會有「真後台」,真後台其意就是當你打開一個程序的時候,除非手動關閉或者關機強制停止外,會一直在後台運行,而且任何應用都可以同時進行,互不幹擾,鎖屏也會運行,例如同時下載,GPS定位,消息通知等等,這樣的後台機制便是」真後台「。
而iOS平台雖然支持後台管理,但是並不是所有的應用程序,也就支持音樂,下載APP,消息推送以及通知會後台運行。例如當你點擊home鍵切換到桌面的時候,你之前運行的程序大多數都會斷掉,如果再切換回來,就會出現重新載入的畫面,當然,如果你切換回來的時間並不長的話是不會重新載入的。
如果是視頻或者游戲,當你切換出去的時候它們會自動暫停在那裡,不會進行緩沖等後台運行。這也是眾多用戶稱其為」偽後台「的原因。
總結來說iOS通過智能識別來判斷哪些後台程序是你經常使用且有用的進行保留,哪些是沒用的進行關閉,通過內存回收機制,保證內存最大功效的利用,繼而帶來系統的流暢感。這也是iOS稱之為iOS的原因,如果想要真後台運行只能通過越獄才能實現。
簡單的對比」偽後台「與」真後台「優劣:
偽後台的優勢:內存利用率非常高,系統運行流暢,高效率的內存使用以及很多應用退到後台斷開網路連接等原因帶來的是耗電量的大幅度降低,手機的發熱量減少。
真後台的優勢:當系統在運行一個應用程序時,可以同時在後台處理多個任務,讓你在玩游戲,看書的同時,還可以緩存電影,緩沖網頁,更新軟體,地圖導航等等眾多任務同時進行,給用戶帶來極大的方便。
偽後台的劣勢:只用你當前在使用的程序是真正運行的,而隱藏在後台的大多數程序都處於靜止狀態,無法同時運行,這也就是很多朋友稱為「墓碑式」後台,這樣的後台運行模式在平常生活中可能感覺不到什麼,但是可能會在你某些需要的時候帶來不便。
真後台的劣勢:內存佔有率極高,後台運行的程序還會繼續聯網工作,處理器不得不一直進行極快的運算處理,從而帶來卡頓,手機電量消耗高,手機發熱等後果。
另外!「偽後台」與「單任務」不是一個概念!「偽後台」與「單任務」不是一個概念!「偽後台」與「單任務」不是一個概念!重要的話要說三遍!簡單來說,「單任務」指的是只能單獨運行一個任務,「偽後台」是可以運行多個任務的,只不過有很多限制許可權。
安卓的軟體要想真後台運行,開發者在編程的時候,編寫一些代碼,申請成為「服務」,才可能真後台運行,也就是要應用程序配合。
Window則不是這樣,所有程序不需特殊處理,全部都是自動支持真後台。
之所以說安卓開放,是因為安卓對哪些程序可以真後台運行並不加限制。只要軟體開發者自己認為有必要,就可以讓自己寫的程序成為真後台運行的程序。
蘋果則對此有嚴格限制,只有少數類型的應用可以真後台運行,例如音樂播放、GPS導航、軟體下載、電話、簡訊、網路語音(例如Skype)等,一共就只有7種。
理論上安卓允許所有類型的程序真後台運行,那所有的安卓都是真後台程序嗎?這就好比:一條馬路允許開到時速100公里,上面跑所有車就非得開100公里時速嗎?
當然不是,得看有沒有必要,並不是說安卓是開放的,允許你寫後台運行的程序,你寫程序就非得寫成後台運行的。
不管是安卓也好,IOS也罷,絕大多數軟體是沒必要真後台的,比如游戲軟體。
比如你在玩賽車時,要是來電,賽車游戲就肯定會到後台,最好的處理就是讓游戲暫停(讓你專心打電話),而不是你一邊打電話,賽車繼續在後台跑(盡管你看不見),馬達聲繼續轟鳴,軟體開發者還沒愚蠢到這個地步。
只有少數軟體是必須真後台的,比如QQ,在安卓下,QQ很容易寫成真後台程序。
對於蘋果來說,如果吧越獄,QQ是不允許後台運行的。為彌補這個缺憾,蘋果採用推送方式,能像收簡訊一樣收到QQ消息,這樣QQ不後台運行也不重要了,重要的是你收到了QQ消息,並且QQ主程序不運行還節省了內存和CPU佔用。
所以說安卓絕大部分應用軟體在後台實際上也是暫停的,這種處理方式最適合於手機。安卓、IOS、WP7都是這樣設計的。
要說完全真後台的手機操作系統(什麼軟體切到後台都能運行),或許微軟的WM可以算的上。WM就跟它的名字一樣,簡直就是手機上運行的Windows。
安卓之所以不如相同硬體配置的IOS流暢,原因有很多,其中最重要的可能是機型眾多,為保證兼容性,應用軟體只能用java編寫。JAVA號稱一次編寫,到處運行,兼容性很好。
但JAVA編寫的軟體,只能在對應的虛擬機運行,然後由虛擬機翻譯成真正的CPU的執行碼,效率受到影響。
iPhone的機型只有寥寥幾種,其編程語言是Object C,可以生成針對硬體的執行碼,可直接在CPU上運行,效率當然高得多了。
② 安卓系統怎麼才能讓軟體後台運行
可以使用Service運行,sevice就是在後台運行的進程。
android中,當Service被kill後,如果重啟需要使用BroadcastReceiver來實現,即廣播接收者,例如利用BroadcastReceiver注冊網路廣播或者開關機廣播,當接收到廣播後直接啟動service,這樣就可以保證service被kill後,自動啟動。
實現代碼:
1.在配置文件AndroidManifest.xml中向系統注冊BroadcastReceiver
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
2.需要添加相應許可權
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
3.在Receiver中就可以添加開機,或者網路狀態改變後需要進行的操作
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
4.執行操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 這樣即可開機,或者網路狀態改變後啟動Service了。
③ android編程如何讓程序後台運行
通過android的四大組件之一的service來實現後台運行,類似Windows上的服務。
1、Android上的service有兩種啟動方式(或者說兩種方法實現service)
①startService()和bindService() ,有區別。
2、簡單的使用Service步驟(startService()):
①建立service的子類,重寫onStartCommand()。(當服務啟動的時候會調用該方法)
{
@Override
publicvoidonCreate(){
}
//這個函數在低版本中使用的是onStart(),onStart()在高版本中已經過時了。
@Override
publicintonStartCommand(Intentintent,intflags,intstartId){
}
@Override
publicvoidonDestroy(){
}
}
②在清單文件中聲明Service組件
<application>
<serviceandroid:name="HelloService">
<intent-fiter>
<actionandroid:name="xxxxx">
</intent-fiter>
</service>
</application>
③在Activity等調用startService(intent);啟動你的Service
Intentintent=newIntent("xxxxx");
//還可以使用Intentintent=newIntent(activity.this,HelloService.class);
startService(intent);
註:兩種方法各有不同,具體請看官方API:
http://developer.android.com/guide/components/services.html
④ 如何讓安卓APP一直在後台運行
工具:
手機
設置步驟如下:
以HUAWEI MATE7手機為例
1、打開「手機管家」,進入功能選項界面;