❶ 如何判断一个android应用程序转到后台并回到前台
按返回或Home键退出应用程序的界面时,应用程序会在后台被挂起。这么设计的好处是,由于应用被系统缓存在内存中,那么在用户打开启动应用时就可以通过调用缓存,快速启动应用。当然,由于当今内存和处理器能力的限制,系统会自动关闭一些进程。那么我如何判断这个应用程序在前台还是后台,应用从后台回到前台了?看到一般都是runningProcess或者runningTasks来判断应用在前台还是后台事实上,Android在SDK 14的时候提供了一个Callback。ActivityLifecycleCallbacks,你可以通过这个Callback拿到App所有Activity的生命周期回调。
public class Application extends android.app.Application {
private int activityCount;//activity的count数
private boolean isForeground;//是否在前台
@Override public void onCreate() {
super.onCreate();
(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override public void onActivityStarted(Activity activity) {
activityCount++;
} @Override
public void onActivityResumed(Activity activity) {
} @Override
public void onActivityPaused(Activity activity) {
} @Override
public void onActivityStopped(Activity activity) {
activityCount--; if(0==activityCount){
isForeground=false; }
} @Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
} @Override
public void onActivityDestroyed(Activity activity) {
} }); } }
这个Callback写在Application里的,你可以在Application初始化的时候来注册。通过这些回调我们可以将这个计数放在onStart()和onStop()中去。activityCount==1,那么就是前台,activityCount==0,那就是后台。这样判断很很简单了吧。
public abstract class BaseClass extends AppCompatActivity {
判断当前的应用程序是不是在运行
//需要申请GETTask权限
private boolean () {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) { ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(getPackageName())) {
return true; } } return false; }
public boolean wasBackground= false; //声明一个布尔变量,记录当前的活动背景
@Override public void onPause(){
super.onPause();
if(())
wasBackground= true; }
public void onResume(){
super.onResume();
if(wasBackground){//
Log.e("aa","从后台回到前台"); } wasBackground= false; }}
❷ android studio怎么恢复原来操作界面自己弄乱了界面。
用惯了emacs的操作方式,每当使用一款新的编辑器的时候,第一个想到的就是这个工具有没有emacs的快捷键,Android studio也是一样的。
1. Android studio设置emacs的方式如下,点击File->Settings
选择其中的keymap,在keymap中选择emacs,这样就成功的设置好了emacs的操作模式:
2. 编辑器主题设置
在File->Settings->Apperance->Theme中选择Darcula
3. 字体大小的设置:
File->Settings->Editor->Colors & Fonts –> Size 设置字体大小:
4. 行号显示
Android studio默认不显示行号,在打开的文件左侧右键,选择 Show Line Numbers,就可以显示行号:
5. 打开的文件自动链接到对应的目录下,注意图中的那个小圆圈,Scroll from Source,点击这个就可以让打开的文件自动链接到该文件所在的文件夹:
❸ android设备,为什么在启动一app过程中,点击home键,app后台启动好以后会拉回到前台
1、让腾讯那些第三方平台修正其启动Intent的设置,使其与原声桌面启动Intent保持完全一致。(PS:基本不可能)
2、自身业务代码规避,我们可以知道,如果是多余的闪屏页入口Activity的话,其基本不可能位于Task的根部,而如果正常启动的话,闪屏页入口Activity必定在多对应的Task的根部位置,那么我们可以从这个地方对于这个bug进行规避,方法就是在闪屏页入口Activity的onCreate代码加入如下一段代码:
if (!this.isTaskRoot()) {
Intent intent = getIntent(); if (intent != null) {
String action = intent.getAction(); if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish(); return;
}
}
}
详细
❹ Android系统如何恢复出厂设置
如您需要恢复Android系统的出厂设置请选择“设置”—》选择“存储卡和手机存储”—》选择“恢复出厂设置”。注意:恢复出厂设置会清除您手机上所有数据,请务必谨慎操作。(上述内容仅适用于广东联通用户)
❺ 安卓手机怎么让后台软件认为自己正在前台运行 手机上一个网游,一放到后台就暂停了很头疼,有没有方法
android中,当我们按home键(一般指手机的物理按钮的中间那个键)回到手机桌面,此时app并没有退出,而是一直运行与后台中,此时如果我们点击app图标,还是会进入刚刚的界面之中。但是这存在一个问题,就是如果内存紧张或者当我们回到桌面,点击了别的应用造成内存紧张,此时再通过点击图标进入app,此时会出现异常。这样造成的用户感觉非常不好!
其实,归纳起来,并不仅仅这种情况下造成数据丢失,造成数据丢失的情况有如下几种:
(1)、当用户按下HOME键时。
这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,因此系统会调用onSaveInstanceState(),让用户有机会保存某些非永久性的数据。
(2)、长按HOME键,选择运行其他的程序时。
(3)、按下电源按键(关闭屏幕显示)时。
(4)、从activity A中启动一个新的activity时。(这种情况应该是,当我们在activity A时,此时通知栏有其他的通知,我们点击通知启动activity B,此时我们进入别的应用)
(5)、屏幕方向切换时,例如从竖屏切换到横屏时。
值得幸运的是,android对此提供了非常好的解决办法!
Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate()、onPause()等生命周期方法,它们并不一定会被触发。当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。因为在这种情况下,用户的行为决定了不需要保存Activity的状态。通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。
❻ 如何监听android程序进入后台,和恢复到前台
如果需要监听的程序是你个人开发,
1)可以定义一个activity基类,在基类的onPause以及onResume中处理
2)5.1及以后系统,可通过ActivityManager.getRunningTasks判断自己的app是否在前台运行
如果需要监听的程序是第三方开发的,那么
1)在5.0及以前系统中,可以通过ActivityManager.getRunningTasks TOP获取前台运行的app信息。但在5.0以后,只能判断自己的app是否在前台运行。
2)通过 UsageStatsManager -> queryUsageStats方法获取Top Activity。调用 queryUsageStats 方法,有一个限制:需要用户到手机的设置页面 Security->Apps 开启Usage的访问权限!
❼ android 我的程序回到前台,怎么进入初始页,不是历史页,什么问题啊
就是让app中所有的activity继承与一个公共的activity(例如:BaseActivity),然后在BaseActivity的onStop()中判断当前程序是否处于后台
代码片段
[java] view plainprint?
01./**
02. * 文件名:BaseActivity.java
03. * 版本号:
04. * 日期:2012-6-20
05. * 创建人:
06. * Copyright wadata 版权所有
07. * 变更:
08. */
09.
10.package com.wadata.mobilefollowup.view.base;
11.
12.import java.util.List;
13.import android.app.Activity;
14.import android.app.ActivityManager;
15.import android.app.ActivityManager.RunningAppProcessInfo;
16.import android.content.Context;
17.
18./**
19. * 名称:BaseActivity
20. * 描述:
21. * 创建人:
22. * 日期:2012-6-20 下午5:53:35
23. * 变更:
24. */
25.
26.public class BaseActivity extends Activity {
27. @Override
28. protected void onStop() {
29. // TODO Auto-generated method stub
30. super.onStop();
31.
32. if (!isAppOnForeground()) {
33. //app 进入后台
34.
35. //全局变量isActive = false 记录当前已经进入后台
36. }
37. }
38.
39. @Override
40. protected void onResume() {
41. // TODO Auto-generated method stub
42. super.onResume();
43.
44.
45. //if (!isActive) {
46. //app 从后台唤醒,进入前台
47.
48. //isActive = true;
49. //}
50. }
51.
52. /**
53. * 程序是否在前台运行
54. *
55. * @return
56. */
57. public boolean isAppOnForeground() {
58. // Returns a list of application processes that are running on the
59. // device
60.
61. ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
62. String packageName = getApplicationContext().getPackageName();
63.
64. List<RunningAppProcessInfo> appProcesses = activityManager
65. .getRunningAppProcesses();
66. if (appProcesses == null)
67. return false;
68.
69. for (RunningAppProcessInfo appProcess : appProcesses) {
70. // The name of the process that this object is associated with.
71. if (appProcess.processName.equals(packageName)
72. && appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
73. return true;
74. }
75. }
76.
77. return false;
78. }
79.}
❽ 安卓2.3手机怎么让软件在后台运行后台运行后怎么再启动到“前台”
后台运行,就是你在运行某个软件的时候,来了短信或者电话,再或者你想去干别的事了,而直接切换到其他程序,那么之前运行的程序这个时候并没有关闭,而在后台运行。当你想让之前的程序再次出现到“前台”的时候,只需要去点击该程序的快捷方式就可以了,点进去你会发现程序还停留在你退出时的界面。
具体操作的话,先运行某个游戏,开始了以后点HOME键,这个时候会显示桌面;然后你再点该游戏的快捷方式,就可以继续玩游戏了。这就是你说的后台和前台的切换。
❾ 如何监听android程序进入后台,和恢复到前台
每个activity都有一个独立的生命周期。当进入后台的时候 该activity会处于 onStop
❿ androidstudio窗口复原
1、进行打开电脑中的Android studio中进行设置布局上的窗口选项。
2、默认布局设定完成之后,然后进行Android studio菜单中的“windows”的选项。
3、然后就会弹出了一个下拉菜单中,进行选择为“store current layout as default”的选项。点击完成之后,就会Android studio的布局进行保存。
4、而现在对Android studio的默认的布局进行改变,改变之后都不是自己想要的布局。
5、而想把自己布局改为自己的保存好的Android studio的布局方式,进行点击Android studio菜单中的”windows“菜单。
6、然后就会弹出了下拉的菜单中的进行选择“restore default layout”的选项,就恢复到了自定义的布局了。