2011-10-28 68 views
0

我想知道是否有方法可以獲取android上當前運行活動的上下文。例如,我有一個活動類,它正在運行。我想要的是調用另一個簡單類來運行一些從Activity類調用的函數。通過這樣做,我需要在Simple Class上設置Activity Class的上下文;另一方面,我需要擁有當前運行活動的上下文,以便我的簡單類實際上可以運行從當前運行活動調用的函數。獲取當前運行活動的上下文

下面是我的項目的軟代碼。

public class Main1 extends Activity { 
    private static GetAPNsInfo getAPNsInfo = new GetAPNsInfo(); 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
       getAPNsInfo.doSomething(); 
    } 
} 

public class GetAPNsInfo { 
    public void doSomething() { 
     Button button = currentRunningActivityContext.findViewById(R.id.button1); 
     button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
      } 
     }); 
    } 
} 

最後,我的這個線程的目的是,我需要一個很好的方式來獲取當前正在運行的活動信息。

這是我找到自我的解決方案。但它並沒有完全解決這個問題。我們可以在Manifest.xml中添加一個接收器。這將運行後臺應用程序。

<receiver android:name=".RunningActivityCapture"> 
     <intent-filter android:priority="-1"> 
      <action android:name="android.intent.action.NEW_OUTGOING_CALL"></action> 
     </intent-filter> 

    </receiver> 

後臺應用程序界面如下圖所示:

public class RunningActivityCapture extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context aContext, Intent intent) { 
     String action = intent.getAction(); 

     if (action.equals(Intent.ACTION_ALL_APPS)) { 
      Activity activty = intent.getCurrentActivity(); 
      Session session = new Session(); 
      session.setRunningActivity(activty); 
     } 
     return; 
    } 
} 

我只能從會話類,它從我的後臺應用程序設置的活動。這是我解決這個問題的第一個想法。但代碼不正確。所以我需要你的幫助。

回答

3

如果你問如何在輔助類使用此MainActivity,您可以通過活動本身到類,作爲活動的上下文。所以,你的構造將是:

public GetAPNsInfo(Context context) { 
    ... 
} 
您存儲的背景下在現場,後來用它

。您將與

private static GetAPNsInfo getAPNsInfo = new GetAPNsInfo(this); 

初始化,如果你問如何獲得上下文任何活動在您的應用程序,我不認爲這建議。

+0

這是我不會需要的。我已經在我的主題中添加了最終目的。我想要的是獲取當前正在運行的活動信息。如果有數百個任務在上百個活動中運行相同的事情,那麼我是否需要爲每個活動設置上下文?如果這樣做會變成一項巨大的工作。 – user964409

+0

也許不建議在我的應用程序中獲取任何活動。但是,應該有一種方法可以只獲得一項最佳跑步活動。我可以用接收器來解決這個問題嗎? – user964409

+0

你想要做什麼?也許有更好的辦法 – Craigy