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>

好的。看到這裏是不是很簡單啊!其實,這個還是困擾了不少人地!謝謝

發佈了42 篇原創文章 · 獲贊 3 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章