开发者

starting/stopping service multiple times not working

开发者 https://www.devze.com 2023-01-14 07:23 出处:网络
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 n

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...

---------- 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(s开发者_如何学Pythonerviceex.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;
    }

}


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

0

精彩评论

暂无评论...
验证码 换一张
取 消