多次启动/停止服务不起作用

时间:2010-08-30 11:14:25

标签: android service

我正在编写一个简单的服务应用程序,下面是Activity和Service的代码..,当我调用startService()时,stopService()它的工作正常一次,就我而言如果再次致电startService(),并且stopService()没有给出期望的结果,则必须从下次开始通知..

----------这是我的活动类-------------

    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);
        }

    }
}

---------这是我的服务-------------

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;
    }

}

1 个答案:

答案 0 :(得分:0)

您的所有方法都不是@Override类方法。你必须用@Override来表示它们。此外,在2.1上,您应该使用onStartCommand()而不是onStart()。另请注意,多次调用startService()只会调用onCreate()一次