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的路径就可以了