androidhome流程
❶ Android 如何在自己的應用中模擬Home鍵
最開始想到的便是Override onKeyDown 這個方法,但經過調試,發現這個在按下Home鍵時,系統是不會發送消息到這里處理的,也就是說模擬KEYCODE_HOME 是沒有效果的,之後又在網上查到 dispatchKeyEvent 這個函數,以下是函數說明:Called to process key events. You can override this to intercept all key events before they are dispatched to the window. Be sure to call this implementation for key events that should be handled normally. 但令人沮喪的是,Home 按鈕所產生的消息依然不經過這里,似乎Home按鈕所產生的消息是由系統處理的。於是想到從其他方面入手,最後找到了以下的方法: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_BACK){ Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 注意 intent.addCategory(Intent.CATEGORY_HOME); this.startActivity(intent); return true; } return super.onKeyDown(keyCode, event); } 特別注意 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 這句,一定要加上,因為Activity 的 launchMode 默認是以 standard 執行的,如果不添加這個標記則 會創建新的Activity 並放在與當前Activity相同的Task中。
❷ Android怎麼實現home鍵完全退出程序
需要使用BroadcastReceiver 廣播接收者,注冊HOME廣播。
創建廣播接收者
public class HomeReceiver extends BroadcastReceiver {
public void onReceive(Context context,Intent intent){
}
}
2.注冊廣播
<receiver android:name="com.xxx.xxx.HomeReceiver" >
<intent-filter>
<action android:name="android.intent.action.CLOSE_SYSTEM_DIALOGS" />
</intent-filter>
</receiver>
3.退出程序
int pid = android.os.Process.myPid(); //獲取當前應用程序的PID
android.os.Process.killProcess(pid); //結束當前進程
❸ 如何啟動一個被home的android應用程序
Android系統的Home應用程序Launcher是由ActivityManagerService啟動的,而ActivityManagerService和PackageManagerService一樣,都是在開機時由SystemServer組件啟動的,SystemServer組件首先是啟動ePackageManagerServic,由它來負責安裝系統的應用程序,具體可以參考前面一篇文章Android應用程序安裝過程源代碼分析,系統中的應用程序安裝好了以後,SystemServer組件接下來就要通過ActivityManagerService來啟動Home應用程序Launcher了,Launcher在啟動的時候便會通過PackageManagerServic把系統中已經安裝好的應用程序以快捷圖標的形式展示在桌面上,這樣用戶就可以使用這些應用程序了,整個過程如下圖所示:
下面詳細分析每一個步驟。
Step 1. SystemServer.main
這個函數定義在frameworks/base/services/java/com/android/server/SystemServer.java文件中,具體可以參考前面一篇文章Android應用程序安裝過程源代碼分析的Step 1。
Step 2.SystemServer.init1
這個函數是一個JNI方法,實現在frameworks/base/services/jni/com_android_server_SystemServer.cpp文件中,具體可以參考前面一篇文章Android應用程序安裝過程源代碼分析的Step 2。
Step 3.libsystem_server.system_init
函數system_init實現在libsystem_server庫中,源代碼位於frameworks/base/cmds/system_server/library/system_init.cpp文件中,具體可以參考前面一篇文章Android應用程序安裝過程源代碼分析的Step 3。
Step 4.AndroidRuntime.callStatic
這個函數定義在frameworks/base/core/jni/AndroidRuntime.cpp文件中,具體可以參考前面一篇文章Android應用程序安裝過程源代碼分析的Step 4。
Step 5.SystemServer.init2
這個函數定義在frameworks/base/services/java/com/android/server/SystemServer.java文件中,具體可以參考前面一篇文章Android應用程序安裝過程源代碼分析的Step 5。
Step 6.ServerThread.run
這個函數定義在frameworks/base/services/java/com/android/server/SystemServer.java文件中,具體可以參考前面一篇文章Android應用程序安裝過程源代碼分析的Step 6。
Step 7. ActivityManagerService.main
這個函數定義在frameworks/base/services/java/com/android/server/am/ActivityManagerServcie.java文件中:
[java]view plain
implementsWatchdog.Monitor,BatteryStatsImpl.BatteryCallback{
......
publicstaticfinalContextmain(intfactoryTest){
AThreadthr=newAThread();
thr.start();
synchronized(thr){
while(thr.mService==null){
try{
thr.wait();
}catch(InterruptedExceptione){
}
}
}
ActivityManagerServicem=thr.mService;
mSelf=m;
ActivityThreadat=ActivityThread.systemMain();
mSystemThread=at;
Contextcontext=at.getSystemContext();
m.mContext=context;
m.mFactoryTest=factoryTest;
m.mMainStack=newActivityStack(m,context,true);
m.mBatteryStatsService.publish(context);
m.mUsageStatsService.publish(context);
synchronized(thr){
thr.mReady=true;
thr.notifyAll();
}
m.startRunning(null,null,null,null);
returncontext;
}
......
}
這個函數首先通過AThread線程對象來內部創建了一個ActivityManagerService實例,然後將這個實例保存其成員變數mService中,接著又把這個ActivityManagerService實例保存在ActivityManagerService類的靜態成員變數mSelf中,最後初始化其它成員變數,就結束了。
Step 8.PackageManagerService.main
這個函數定義在frameworks/base/services/java/com/android/server/PackageManagerService.java文件中,具體可以參考前面一篇文章Android應用程序安裝過程源代碼分析的Step 7。執行完這一步之後,系統中的應用程序的所有信息都保存在PackageManagerService中了,後面Home應用程序Launcher啟動起來後,就會把PackageManagerService中的應用程序信息取出來,然後以快捷圖標的形式展示在桌面上,後面我們將會看到這個過程。
❹ 對於android手機, 長按home鍵,能起什麼作用
1、各個版本的安卓,常按home鍵,屏幕會出現最近是用過的app程序圖標。
2、對於安卓4.1來說,則更加明細,即不僅會出現最近用過的aop還會出現,正在後台運行的程序,一個簡單的小窗口即可迅速切換到後台程序。
3、另外,可通過一些改動,實現長按菜單鍵結束進程。
❺ ANDROID_HOME 環境變數配置
1.打開Terminal
2.進入當前用戶的home目錄:$ cd ~/
3.創建.bash_profile文件:$ touch .bash_profile
4.打開並編輯.bash_profile文件:$ open .bash_profile
5.在文件中寫入以下內容:
6、使其立即生效:$ source .bash_profile
7、配置 .zshrc 文件
1)終端中輸入:open .zshrc
2)如果已經有了,輸入:open .zshrc -e
3)編輯文檔如下圖所示:
source ~/.bash_profile
4)輸入:source ~/.zshrc 使其立即生效
系統環境變數中添加
ANDROID_HOME=C:\Users\youruser\AppData\Local\Android\Sdk
系統環境變數path中添加:
%ANDROID_HOME%;%ANDROID_HOME%/tools;%ANDROID_HOME%/platform-tools
❻ Android怎麼實現home鍵完全退出程序
Android上Home鍵是返回桌面。即使是返回鍵也不是用來關閉程序的。安卓軟體一直保存在後台,系統根據資源需求選擇徹底關閉軟體。
強行關閉軟體可以通過長按home鍵調出fast switch菜單實現。三星的一些機型有專門的快速切換菜單按鈕。
❼ Android Home的配置問題
其實android只需要配置 java jdk環境變數就好,然後開啟eclipse 找到屬性設置 android 手動選擇android sdk的路徑就可以了