0

我試圖從一個活動,從服務器獲取數據,並嘗試使用廣播接收器獲取另一個活動中的數據,但廣播接收器類沒有被調用,我有意圖服務註冊我的服務類清單還我的廣播接收器類不被稱爲

這裏是我的代碼來啓動服務

Intent intent = new Intent(LoginActivity.this, MyWebRequestService.class); 
startService(intent); 

類MyWebRequestService

//inside on handle intent 
new AsynchCall().execute(); 
Intent broadcastIntent = new Intent(); 
broadcastIntent.setAction(MyWebRequestReceiver.PROCESS_RESPONSE); 
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT); 
//here I am getting the data in my arraylist 
broadcastIntent.putStringArrayListExtra("namelist", servicelist); 
sendBroadcast(broadcastIntent); 

的活動,我想收到我的數據

IntentFilter filter =IntentFilter(MyWebRequestReceiver.PROCESS_RESPONSE); 
filter.addCategory(Intent.CATEGORY_DEFAULT); 
receiver = new MyWebRequestReceiver(); 
registerReceiver(receiver, filter); 

在相同的活動我已經寫了我的廣播接收器類

public class MyWebRequestReceiver extends BroadcastReceiver 
{ 
    public static final String PROCESS_RESPONS = "com.rentpro.PROCESS_RESPONSE"; 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     listofnames = intent.getStringArrayListExtra("namelist"); 
    } 
} 

回答

0

確保接收器

registerReceiver(receiver, filter); 

被髮送之前調用廣播

sendBroadcast(broadcastIntent); 
+0

A也請確保你的應用不會通過調用'unregisterReceiver()'來泄漏接收者,最好是在你的activity的onPause()方法中。 – Siri0S

+0

是的,我已經在onPause中調用了它,但是如何在sendBroadcast(broadcastIntent)之前調用registerReceiver(receiver,filter);在我的情況下,我已經參考了這個鏈接[鏈接](http://www.mysamplecode.com/2011/10/android-intentservice-example-using.html) –