tags:

views:

27

answers:

2

HI, I am writing a simple service application, below is the code of Activity and Service..,when i am calling startService(),and stopService() its working fine for the one time,in my case it has to give notification..from next time onwards if call again startService(),and stopService() its not giving desired results...

Please help me in that if I am missing something....ThanQ.

---------- this is my activity class ------------- package com.mypack.serviceex;

import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button;

public class serviceex extends Activity implements Button.OnClickListener{ /** Called when the activity is first created. */ Button bt1,bt2; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

    bt1 = (Button) findViewById(R.id.Button01);
    bt2 = (Button) findViewById(R.id.Button02);

    bt1.setOnClickListener(this);
    bt2.setOnClickListener(this);


}
@Override
public void onClick(View v) {
    if( v == bt1)
    {
        Intent i = new Intent(serviceex.this,myservice.class);
        Log.i("err","onClick(View v....");
        startService(i);
    }
    else if(v == bt2)
    {
        Intent i = new Intent(serviceex.this,myservice.class);
        Log.i("err","else if(v == bt2)........");
        stopService(i);
    }

}

}

     ---------  this is my service   -------------

package com.mypack.serviceex;

import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log;

public class myservice extends Service {

private NotificationManager nmgr;
public void onCreate()
{
    super.onCreate();
    nmgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Log.i("err","onCreate..........");
    Thread th = new Thread(null,new incls(),"service...");

}
public void onStart(Intent intent,int sid)
{
    super.onStart(intent, sid);
    Log.i("err","onStart........");
}
public void onDestroy()
{
    super.onDestroy();
    Log.i("err","onDestroy..........");
    displayMessage("Stopping Service");

}
public void displayMessage(String str)
{
    Log.i("err.","displayMessage.....");
    Notification nf = new Notification(R.drawable.icon,str,System.currentTimeMillis());
    PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this,myservice.class), 0);
    nf.setLatestEventInfo(this, "Service...", str, pi);
    nmgr.notify(R.string.uid, nf);


}

private class incls implements Runnable
{
    public void run()
    {
        Log.i("err","public void run()..........");
        System.out.println("In Runnn");


    }



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

}

A: 

None of your methods are @Overrideing the class methods. You have to annote them with @Override. Also, on 2.1 you should use onStartCommand() instead of onStart(). And also note that calling startService() multiple times will only call onCreate() once

Falmarri
A: 

Is the @Override absolutely necessary? Doesn't the Java spec say that you can still override a method without @Override, but the annotation will cause a compile error if the method is not actually overriding?

adstro