MainActivity如下:

package cc.testbackgroundtofront;import java.util.List;import android.app.Activity;import android.app.ActivityManager;import android.app.ActivityManager.RunningTaskInfo;import android.content.ComponentName;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.preference.PreferenceManager;import android.widget.Toast;/** * Demo描述: * 判断应用从后台回到前台 * 即按下Home键后重新进入到应用 */public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}@Overrideprotected void onResume() {super.onResume();}@Overrideprotected void onRestart() {super.onRestart();SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());boolean isCurrentRunningForeground = prefs.getBoolean("isCurrentRunningForeground", false);if (!isCurrentRunningForeground) {Toast.makeText(MainActivity.this, "从后台回来", Toast.LENGTH_SHORT).show();}}@Overrideprotected void onStop() {super.onStop();try {Thread.sleep(1000);new Thread(){public void run() {boolean isCurrentRunningForeground=isRunningForeground();SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());Editor editor=prefs.edit();  editor.putBoolean("isCurrentRunningForeground", isCurrentRunningForeground);editor.commit(); };}.start();} catch (Exception e) {}}public boolean isRunningForeground(){String packageName=getPackageName(this);String topActivityClassName=getTopActivityName(this);System.out.println("packageName="+packageName+",topActivityClassName="+topActivityClassName);if (packageName!=null&&topActivityClassName!=null&&topActivityClassName.startsWith(packageName)) {System.out.println("---> isRunningForeGround");return true;} else {System.out.println("---> isRunningBackGround");return false;}}public  String getTopActivityName(Context context){String topActivityClassName=null; ActivityManager activityManager =(ActivityManager)(context.getSystemService(android.content.Context.ACTIVITY_SERVICE )) ; //android.app.ActivityManager.getRunningTasks(int maxNum)  //int maxNum--->The maximum number of entries to return in the list //即最多取得的运行中的任务信息(RunningTaskInfo)数量     List<RunningTaskInfo> runningTaskInfos = activityManager.getRunningTasks(1) ;     if(runningTaskInfos != null){     ComponentName f=runningTaskInfos.get(0).topActivity;     topActivityClassName=f.getClassName();         }     //按下Home键盘后 topActivityClassName=com.android.launcher2.Launcher     return topActivityClassName;}public String getPackageName(Context context){ String packageName = context.getPackageName();   return packageName;}}


main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="判断应用是否是由后台回到前台"        android:layout_centerInParent="true"     /></RelativeLayout>


更多相关文章

  1. Android(安卓)终端命令安装 apk 应用程序
  2. Android(安卓)应用性能调试
  3. 检查Android进程当前是否正在后台运行
  4. 《android 学习》三、Intent 的概念及应用
  5. Android(安卓)App Market
  6. Android重启应用程序代码
  7. 【Android(安卓)Dev Guide - 02】 - Application Fundamentals
  8. 企业级Android(安卓)Application Activity管理
  9. android监控程序状态(安装 卸载)

随机推荐

  1. android位图颜色模式的问题
  2. Robot Framework如何对Android的控件定位
  3. android 中文语音
  4. 8个常用的Android开发工具
  5. Android NDK OverView翻译
  6. Android中shape的简单介绍
  7. Android使用MediaRecorder实现录音功能
  8. Android training–android studio
  9. Android应用程序键盘(Keyboard)消息处理机
  10. bindService