android 程序从后台跳到最顶层的界面

    今天是我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>

好的。看到这里是不是很简单啊!其实,这个还是困扰了不少人地!谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值