1. 程式人生 > >service使用handler與Activity溝通的兩種方法

service使用handler與Activity溝通的兩種方法

標籤:

通過之前的學習,我們知道了在主執行緒中宣告一個handler例項並實現了訊息的處理方法之後,我可以在子執行緒中用此例項向主執行緒發訊息,在處理方法中獲取訊息並更新UI。

那麼,如果我們想用handler在service中向activity檔案傳遞訊息呢?在這裡提供了兩種方法

方法一:

在想接收訊息的Activity中,把handler例項宣告為靜態的公用的,即 public static Handler handler;

由於為公用靜態的成員變數,那麼就可以以 activityname.handler.sendmessage()方式來發送訊息了

方法二:

在service中新建一個方法,傳入activity的上下文,在service中定義一個靜態的目標activity類成員變數,將得到的上下文賦予成員變數,並通過新定義的這個方法來啟動服務。

例子如下

  private static foregroundactivity activity;

    public static void onstar(Context c)
    {
        activity = (foregroundactivity) c;
        Intent intent = new Intent(c,foregroundservice.class);
        activity.startService(intent);
    }