簡體   English   中英

如何檢查我正在啟動的活動是否正在運行?

[英]How to check whether the activity I am starting is the activity which is running?

我有6個按鈕,對於第1個3個按鈕,我想開始相同的活動,對於其他3個按鈕,則要分開新的活動。

因此,當我單擊第一個按鈕然后單擊第二個按鈕開始相同的活動時,就會出現問題,因為我們無法從相同的活動開始相同的活動。

所以我只需要知道天氣,我將要開始的活動就是正在運行的相同活動,因此,如果相同的活動,那么我將只更新一些UI內容,否則將開始新的活動。

所以有人可以幫助我知道這一點嗎?

這是使用活動管理器的一種好方法。 基本上,您可以從活動管理器中獲取runningTasks。 它將始終始終首先返回當前活動的任務。 從那里您可以獲取topActivity。

這里的例子

有一種簡單的方法可以從ActivityManager服務獲取正在運行的任務列表。 您可以請求手機上運行的最大任務數,默認情況下,將首先返回當前活動的任務。

一旦有了,就可以通過從列表中請求topActivity來獲得ComponentName對象。

這是一個例子。

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);



     // get the info from the currently running task
     List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1); 

     Log.d("topActivity", "CURRENT Activity ::"
             + taskInfo.get(0).topActivity.getClassName());

     ComponentName componentInfo = taskInfo.get(0).topActivity;
   componentInfo.getPackageName();

您需要在清單上具有以下權限:

uses-permission android:name="android.permission.GET_TASKS"

例如,您可以檢查活動的類別(假設“ this”是當前活動):

if (this instanceof ActivityClassYouGoingToStart) {
    // update UI
} else {
    // start new activity
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM