导航:首页 > 操作系统 > androidhome应用程序

androidhome应用程序

发布时间:2022-09-18 04:54:23

android程序按HOME键后,重新点击图标是重起应用程序,而不是之前那个界面

当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上应用程序图标时,系统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入,会直接显示程序栈中最上层的Activity

不过。。。按home键,程序还会在后台运行,activity不会destroy,此时还是占用系统内存的,当运行某项占用内存的动作,内存不够,系统会自动回收不常用的内存。你的程序在别的手机上跑时候很可能是被干掉了。所有每次都会重新运行。。。

长按home键进入 与 点击图标进入的生命周期执行有那么一点不一样的。。

解决方法一、
在manifest里面在你的程序启动的第一个页面的声明里,去掉android:launchMode="singleTask"等相关就ok了

解决方法二、

如果你必须要实现这个功能的话 可以参考下 下边这篇文章。
http://dev.10086.cn/cmdn/wiki/index.php?edition-view-6259-1.html

思路大致就是: 按home键时记录当前的activity(可以用SharedPreferences),下次执行程序的时候判断SharedPreferences有没有值,有的话就跳到这个activity,同时通过onSaveInstanceState 拿到之前的状态。完成后记得把SharedPreferences弄空,不然你正常进入程序都不好使了。

PS: 法一可能有时候不好使。。。法二是我的想法,没用过。

Ⅱ android应用程序按下HOME后隔一段时间再去进入就会报错,请问如何防止在按下HOME后系统回收改应用的内存

系统回收内存是不可预知的。你只能通过对对象做判断,如果被回收了直接return或程序不往下执行等操作。

Ⅲ 如何让android程序,点击home键之后,在任务栏出现,并且一直运行

notification 可以在通知栏加个图标,

Ⅳ 如何启动一个被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键之后,在任务栏出现,并且一直运行

是这样的 安卓系统的应用程序有很多种退出方式 有些是有退出选项 有些是直接点返回键就退出 并且 有些软件点击返回后是在后台运行 这个不用管太多 如果是HOME键 是不会退出的 只是返回桌面 长按HOME可以调出正在运行的程序和最近几次运行的程序

Ⅵ android手机长按home键时,程序还会继续运行吗,想把正在运行的程序暂停掉要哦怎么办

按home键,返回主界面,这个时候你之前运行的程序已经是暂停了,不需要你手工暂停.
如果你想完全中止到设置-应用程序-正在运行的服务,这里可以中止你的所有应用程序

Ⅶ android系统中home键调用的是什么方法

iphone上的home键按一次home键,返回主界面。双击home键,出现后台运行程序。按电源键3秒后,同时按住home键10秒,松开电源键,保持home键15秒,进入DEF模式(越狱用)。 Android上的home键常见用法: 按一次返回主屏幕,或进入所有应用程序界面; 按home键不动,显示最近打开的应用程序。 细节: 正在执行某应用程序的时候,当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上该应用程序图标时,系统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入。会直接显示程序栈中最上层的Activity。可是视为应用程序的“暂停”,”停止“(需要应用程序的支持)。

Ⅷ android中一个应用程序点击home键后暂时退出程序,点击原程序icon后进入程序原来的状态,如何实现

这个问题不难!点击home,程序退出到后台后,生命周期在onStop。
在onPause()做好数据备份。
onRestoreInstanceState(Bundle)数据恢复成活动状态。

Ⅸ Android怎么实现home键完全退出程序

需要使用BroadcastReceiver 广播接收者,注册HOME广播。

  1. 创建广播接收者

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); //结束当前进程

阅读全文

与androidhome应用程序相关的资料

热点内容
编译iso 浏览:938
照片生成pdf格式 浏览:194
病历转pdf 浏览:835
云服务器配硬件 浏览:978
服务器10k什么意思 浏览:21
pdfeditor汉化 浏览:884
新科学pdf 浏览:746
现在还有c语言编译吗 浏览:674
哪里买到单片机 浏览:480
linux文件打开数量 浏览:510
编译原理中什么是l属性文法 浏览:371
硬盘加密时出现的问题 浏览:61
如何退域命令 浏览:108
看书的app哪里看 浏览:291
服务器怎么调大 浏览:3
android天气apijson 浏览:984
为什么创建id会出现服务器错误 浏览:837
代码中有不必编译的单词吗 浏览:563
钩子与数据库编程 浏览:563
安卓光遇录歌怎么设置 浏览:485