2015-10-06 25 views
1

嗨,我創建廣播接收器接收Intent.ACTION_BATTERY_CHANGED事件的電池電量。它工作正常,但當我從內存中使用刷卡從主頁按鈕中刪除此應用程序,然後它不接收事件。 我的廣播的代碼是Android廣播不執行時,從內存中清除

private BroadcastReceiver BatteryReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     int level = intent.getIntExtra("level", 0); 
     Toast.makeText(BatteryIndicatorService.this,""+level, Toast.LENGTH_SHORT).show(); 
    } 
}; 

回答

4

這可以當你的後臺運行廣播爲您需要創建service.In這項服務,你必須確定你的廣播來完成。

BatteryIndi​​catorService.java

public class BatteryIndicatorService extends Service { 
private BroadcastReceiver BatteryReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     int level = intent.getIntExtra("level", 0); 
     Toast.makeText(BatteryIndicatorService.this,""+level, Toast.LENGTH_SHORT).show(); 
    } 
}; 

@Override 
public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    return null; 
} 

public void onCreate() { 
    // TODO Auto-generated method stub 
    super.onCreate(); 
    // Register Receiver. 
    registerReceiver(BatteryReceiver, new IntentFilter(
      Intent.ACTION_BATTERY_CHANGED)); 
} 

public void onStart(Intent intent, int startId) { 
    // TODO Auto-generated method stub 
    super.onStart(intent, startId); 
} 

@Override 
public void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
    } 
} 

而且從MainActivity開始像

MainActivity.java

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    // Start service in Background 
    startService(new Intent(this, BatteryIndicatorService.class)); 
} 

定義服務中的Manifest.xml應用標籤

的manifest.xml

<service 
     android:name="com.ittl.batteryindicator.BatteryIndicatorService" 
     android:enabled="true" > 
</service>