2016-03-22 16 views
0

Ağ değişikliklerini algılamak için bildirim dosyasımda BroadcastReceiver ekledim. İşte, BroadcastReceiver'u genişleten sınıf.statik hizmet nesnesi sıfır olur

public class NetworkConnectivityReceiver extends BroadcastReceiver { 
static FirstService firstService; 
public static void initServiceObj (FirstService serviceObj) { 
    if (serviceObj == null) { 
     CommonUtils.printLog("service obj is null.. returing"); 
     return; 
    } 
    CommonUtils.printLog("setter called for serviceObj"); 
    firstService = serviceObj; 

} 
public void onReceive(Context context, Intent intent) { 
    if (firstService == null) { 
     CommonUtils.printLog("service obj is null in onreceive.. returing"); 
     return; 
    } 
    firstService.onNetworkChange(); 
} 
} 

Ben FirstService adlı bir hizmeti başladım ve bu servisin onCreate I statik yöntem initServiceObjFirstService obj init için diyoruz. Nesnelerin ayarlandığı günlüklerden görüyorum. Ancak ağ 'da değiştiğinde, hizmet nesnesinin boş olacağını buldum. Statik değişken neden OnReceive'de null olur? Herhangi bir yardım takdir edilir.

+1

Statik FirstService firstService; 'ne için ihtiyacınız var? Eğer hizmetinize bazı bilgileri iletmeniz gerekiyorsa, 'Intent'inizi ekstralar ile initleyin ve sadece 'startService' – pskink

+0

@pskink'i arayın. Hizmet nesnesine ihtiyacım var, böylece ağ her değiştiğinde hizmet sınıfındaki bu nesne üzerindeki yöntemi çağırabilirim. Ve sanırım bunun statik olması gerekiyor çünkü "onReceive" denen nesne üzerinde kontrolüm yok. – shshnk

+0

Servisinize bazı bilgileri iletmeniz gerekiyorsa, 'Intent' inizi extras ile başlatın ve 'startService' – pskink

cevap

0

Muhtemelen yanlış yaklaşımı kullanıyordum. Yorumlarda önerildiği gibi Şimdi bir bayrak seti ile bir amaç ile startService arayın ve benim onStartCommand benim bayrak için kontrol ediyorum. Bayrak ayarlanmışsa, onNetworkChange()'u aramalıyım. Bu benim için problemi çözdü.

İlgili konular