編輯:關於Android編程
溫故而知新
網上說多進程的文章很多,不過基本都是在討論很深的東西,這是需要去專研的,而我是來這篇是用來偷懶的(應用層次),記錄的都是自己對多進程的理解,方便以後用到的時候來偷懶,如果有錯,請指教,小小程序員萬分感謝。
講進程,先來回答下面幾個問題:
1.什麼是線程?
線程就是程序中單獨執行的流控制。
2.什麼是多線程?
多線程就是單個程序中執行多個流控制。作用就是最大限度的使用CPU資源。
3.什麼是進程?
一般指的是一個執行單元,即一個應用程序(Android中就是一個應用)。
4.線程和進程的關系?
一個進程可以有多個線程,進程與線程是包含與被包含的關系。
5.為什麼要用多進程?
1.單進程所分配的內存不夠,需要更多的內存。
2.需要運行一個獨立的組件。
3.干一些不可見人的勾當,比如(
A-> 心跳 ->B,如果B沒啟動,就啟動B。
B-> 心跳 ->A,如果A沒啟動,就啟動A。
簡單說就是雙守護進程來防止被用戶殺掉。)
6.怎麼開啟多進程?
AndroidManifest.xml中設置android:process=":remote"
<service android:name=".remoteService" android:label="@string/app_name" android:process=":remote"/>
Activity中啟動這個服務
Intent mIntent = new Intent(this, remoteService.class); startService(mIntent);
7.":remote"中,冒號是個什麼鬼?
它不是鬼,android:process表示這個組件跑在什麼鬼進程裡,就是進程名。用:的意思是表示這是這個進程對於啟動它的應用來說是私有的。類似於我們注冊Activity省略包名一樣。如果我們的包名是com.example.whitelaning,那這個 android:process=":remote"的進程的名字就是"com.example.whitelaning:remote"。
8.私有進程和全局進程有什麼區別?
我也想知道%>_<%有人知道請指教
夜雨寄北大大回復是,e帶:的表示是當前應用的私有進程,其他應用的組件不可以跟它跑在同一個進程裡面,而對於全局進程,其他應用可以通過shareUID來跟它處於同一個進程裡面具有相同Uid的應用可以共享數據,可以互相訪問對方的私有數據(主席的書在多進程那一節裡面有講解)
9.多進程有什麼要注意的?
1.每次開啟多進程,Application都會重新執行一遍,所以如果你在Application做了很多初始化的工作,那就需要判斷是哪個進程啟動的Application了。
方法:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); int pid = android.os.Process.myPid(); String processNameString = ""; ActivityManager mActivityManager = (ActivityManager)this.getSystemService(getApplicationContext().ACTIVITY_SERVICE); for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager.getRunningAppProcesses()) { if (appProcess.pid == pid) { processNameString = appProcess.processName; } } if("com.example.whitelaning".equals(processNameString)){ //do Something } else { //do Something } } }
2.多進程會使單例模式失效,因為兩個線程的內存是隔離的。
10.還有什麼要知道的?
去看源碼吧,你會死去活來的,如果看完還沒死,請告訴我私有進程和全局進程的區別吧,我會獻上我一年份的膝蓋的~
通過此文希望能對Android多線程的資料掌握,謝謝大家對本站的支持!
ProgressBar 簡介ProgressBar是一種很常用的Ui,用於給復雜的操作顯示進度,提供更好的用戶相應。使用setProgress()incrementPro
一、簡介 Android應用程序中一般都有多個Activity,在Activity中,通過調用StartActivity方法,並在該方法的參數中傳遞Intent對象,就可
這篇博客講解一下在Android中使用Notification提示消息給用戶,Notification是一種具有全局效果的通知,程序一般通過NotificationMan
寫在前面:在暴雨天能去上課的都是好學生,能去上班的都是游泳運動員~ 問大家一個問題:Android中一個應用程序的真正入口是什麼?無論你知道不知道,別著急回答,