今天是我2015年新年上班的第一天!再次祝大家新年快乐!节节高升!想想上班到现在,如今过年的氛围自己感觉远远没有小时候的鸡冻了!反而一想到上班,到是让我能够鸡冻快乐下的乐事之一了!
那么,今天我将给大家介绍一个小的知识点,就是当程序 从前台手动置为后台运行的时候,我们要通过各种操作方式,如点击桌面的程序运行图标,或者长按home键,以及第三方应用跳转到该程序的时候,我们有时候会经常发现,明明程序还在后台运行,我只是进行操作把它从后台置为前台而已,为什么会重新启动该程序呢?
其实,在这里我给大家一个解决方法:
package com.×××.×××;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
/**
* @类名:startActivity
* @类描述:启动类
* @作者:Administrator
* @创建时间:2015年2月25日-上午10:01:16
* @修改人:×××
* @修改时间:
* @修改备注:
* @版本:
*/
public class startActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (needStartApp()) {
/**如果需要重启,do something...**/
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
}
finish();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
/** 当键盘显示与关闭,还有屏幕是横向和垂直切换时,我们在这里不做任何处理 **/
super.onConfigurationChanged(null);
}
/**
* @方法说明:检测是否需要重启app
* @方法名称:needStartApp
* @return
* @返回值:boolean
*/
private boolean needStartApp() {
final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningTaskInfo> tasksInfo = am.getRunningTasks(1024);
if (!tasksInfo.isEmpty()) {
final String ourAppPackageName = getPackageName();
RunningTaskInfo taskInfo;
final int size = tasksInfo.size();
for (int i = 0; i < size; i++) {
taskInfo = tasksInfo.get(i);
if (ourAppPackageName.equals(taskInfo.baseActivity
.getPackageName())) {
/** continue application start only if there is the only
* Activity in the task
* (BTW in this case this is the StartupActivity)**/
return taskInfo.numActivities == 1;
}
}
}
return true;
}
}
接下来我们要在清单配置文件里面进行配置,默认启动程序入口从该类进入:
<activity android:name=".StartupActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
好的。看到这里是不是很简单啊!其实,这个还是困扰了不少人地!谢谢