나는 (ON_BATTERY_CHANGE
)을 청취하는 서비스를 가지고 있으며, 그러면 onReceive 서비스가 내 MainActivity로 브로드 캐스트를 보냅니다. 문제는 어떻게해서든지 서비스에서 내 주요 활동으로 옮길 수 없다는 것입니다. 코드 : 주요 활동 :서비스에서 활동으로 인 텐트를 보냄
public class MainActivity extends Activity
private BroadcastReceiver batteryReceiverService;
private TextView text2;
....
protected void onCreate(Bundle savedInstanceState) {
text2=(TextView)findViewById(R.id.TV_text2);
batteryReceiverService = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
text2.setText("left: "+intent.getStringExtra("H")+" hours "+intent.getStringExtra("M")+" minute(s)");
Log.e("text2","text2 HHH " +intent.getStringExtra("H")); //log shows 0
Log.e("text2","text2 MMM " +intent.getStringExtra("H")); // log shows 0
}
};
registerReceiver(batteryReceiverService, new IntentFilter(UltimateBatterySaverService.BROADCAST_ACTION));
....
@Override
protected void onDestroy() {
unregisterReceiver(batteryReceiverService);
super.onDestroy();
}
서비스 :
public class UltimateBatterySaverService extends Service {
private Intent intent;
static final String BROADCAST_ACTION = "lt.whitegroup.ultimatebatterysaver";
private BroadcastReceiver batteryLevelReceiver;
....
public void onCreate() {
super.onCreate();
intent = new Intent(BROADCAST_ACTION);
}
@Override
public void onDestroy() {
unregisterReceiver(batteryLevelReceiver);
super.onDestroy();
}
IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
batteryLevelReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent){
// Receiving data, calculating and etc
averageChargingH=timeAllInHours;
averageChargingM=timeAllInMinutes;
// to put extras and send broadcast
does();
......
public void does(){
String strLong = Long.toString(averageChargingH);
String strLong2 = Long.toString(averageChargingM);
Log.e("cccccc","strLong h "+strLong); // getting good value not 0(everything ok)
Log.e("cccccc","strLong2 m"+strLong2); // getting good value not 0(everything ok)
intent.putExtra("H", strLong);
intent.putExtra("M", strLong2);
sendBroadcast(intent);
}
내 정보가 제대로 옮겨진되지 않는 이유 어떤 아이디어?
이 서비스를 AndroidManifest.xml에 추가하셨습니까? – hakiko
우리가 Activity에 등록한다면 내가 아는 한, XML로 할 필요가 없으며 틀린가요? – whiteLT
참조 : http://stackoverflow.com/questions/7144908/how-is-an-intent-service-declared-in-the-android-manifest – hakiko