Cevabın için teşekkürler Ahmet,
ben android'de servis ve observe örneklerini ayrı ayrı projeler olarak çalıştırmama rağmen servis ile observe olayını birbirine bağlayamadım.
Aşağıda ZamanServisi.java içinde yer alan
[code]yardimci.post(new Runnable() {
@Override
public void run() {
Toast.makeText(ZamanServisi.this, sonuc, Toast.LENGTH_SHORT).show();
}
});[/code]
satırlarında olduğu gibi Toast kullanarak ekrana basmak yerine, AnaEtkinlik.java'da ki ListView'e nasıl satır ekletebiliriz.
Eğer projeyide indirmek isterseniz, projeyi internete yükleyebilirim.
AnaEtkinlik.java
----------------------------------------------------------
[code]package com.androidce.servisogreniyorum;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class AnaEtkinlik extends Activity
{
String deneme;
private String[] OrnekSatirlar = {"ornek satir 1", "ornek satir 2"};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.ana_etkinlik);
ListView listemiz=(ListView) findViewById(R.id.listView1);
ArrayAdapter<String> veriAdaptoru = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, android.R.id.text1, OrnekSatirlar);
listemiz.setAdapter(veriAdaptoru);
Button dugme = (Button) findViewById(R.id.dugmeServis);
if(servisCalisiyorMu())
{
dugme.setText(getString(R.string.durdur));
}
else
{
dugme.setText(getString(R.string.baslat));
}
}
private boolean servisCalisiyorMu()
{
ActivityManager servisYoneticisi = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for(RunningServiceInfo servis : servisYoneticisi.getRunningServices(Integer.MAX_VALUE))
{
if (getApplication().getPackageName().equals(servis.service.getPackageName()))
{
return true;
}
}
return false;
}
public void dugmeServisTikla(View v)
{
Button dugme = (Button) v;
if(servisCalisiyorMu())
{
stopService(new Intent(this, ZamanServisi.class));
dugme.setText(getString(R.string.baslat));
}
else
{
startService(new Intent(this, ZamanServisi.class));
dugme.setText(getString(R.string.durdur));
}
}
}[/code]
ZamanServisi.java
-----------------------------------------------------------
[code]package com.androidce.servisogreniyorum;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.widget.Toast;
public class ZamanServisi extends Service
{
Timer zamanlayici;
Handler yardimci;
final static long ZAMAN = 5000;
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public void onCreate()
{
super.onCreate();
zamanlayici = new Timer();
yardimci = new Handler(Looper.getMainLooper());
zamanlayici.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
bilgiVer();
}
}, 0, ZAMAN);
}
private void bilgiVer()
{
long zaman = System.currentTimeMillis();
SimpleDateFormat bilgi = new SimpleDateFormat("dd MMMM yyyy, EEEE / HH:mm");
final String sonuc = bilgi.format(new Date(zaman));
yardimci.post(new Runnable()
{
@Override
public void run()
{
Toast.makeText(ZamanServisi.this, sonuc, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onDestroy()
{
zamanlayici.cancel();
super.onDestroy();
}
}[/code]