Uygulamamda bir etkinliğim ve hizmet var ... Hizmet, GPS'den alınan verilerden toplanan iletileri yayınlayacaktır ... Etkinlik, yayın iletilerini almalı ve kullanıcı arabirimini güncelleştirmelidir. Ben ayrı dosyada sınıf çalışıyor ServiceReceiver .... kullanıyorum düzgün çalışmıyorsa bu kodu ... kullandığınızda ...Hizmetten etkinliğe nasıl veri alınır
kodum
public class LocationPollerDemo extends Activity {
private static final int PERIOD = 10000; // 30 minutes
private PendingIntent pi = null;
private AlarmManager mgr = null;
private double lati;
private double longi;
private ServiceReceiver serviceReceiver;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mgr = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent i = new Intent(this, LocationPoller.class);
i.putExtra(LocationPoller.EXTRA_INTENT, new Intent(this, ServiceReceiver.class));
i.putExtra(LocationPoller.EXTRA_PROVIDER, LocationManager.GPS_PROVIDER);
pi = PendingIntent.getBroadcast(this, 0, i, 0);
mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), PERIOD, pi);
DebugLog.logTrace("On Create Demo");
Toast.makeText(this, "Location polling every 30 minutes begun", Toast.LENGTH_LONG).show();
serviceReceiver = new ServiceReceiver();
IntentFilter filter = new IntentFilter("me");
this.registerReceiver(serviceReceiver, filter);
}
class ServiceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
File log = new File(Environment.getExternalStorageDirectory(), "Location2.txt");
DebugLog.logTrace(Environment.getExternalStorageDirectory().getAbsolutePath());
try {
BufferedWriter out = new BufferedWriter(new FileWriter(log.getAbsolutePath(), log.exists()));
out.write(new Date().toString());
out.write(" : ");
Bundle b = intent.getExtras();
Location loc = (Location) b.get(LocationPoller.EXTRA_LOCATION);
String msg;
if (loc == null) {
loc = (Location) b.get(LocationPoller.EXTRA_LASTKNOWN);
if (loc == null) {
msg = intent.getStringExtra(LocationPoller.EXTRA_ERROR);
} else {
msg = "TIMEOUT, lastKnown=" + loc.toString();
}
} else {
msg = loc.toString();
}
if (msg == null) {
msg = "Invalid broadcast received!";
}
out.write(msg);
out.write("\n");
out.close();
} catch (IOException e) {
Log.e(getClass().getName(), "Exception appending to log file", e);
DebugLog.logException(e);
}
}
}
}
söyle lütfen ... !!
ve OnPause içindeki reciever kaydını silmek unutmak asla .... sen ne kadar istediğiniz performans göstereceğini sınıfta sınıftır –
@FaisalNaseer Nasıl kayıt silebilirsiniz bazı örnek kodlar verebilirsiniz lütfen –
Sadece 'unregisterReceiver (mMessageReceiver);' –