onCreate不会在服务中运行

时间:2018-01-30 13:31:56

标签: android

我正在撰写此服务但在启动应用时无法看到日志字符串。 如果我在方法startBeaconDetecting中放置一个Log.i,我可以看到它,但是onCreate()方法没有启动。 为什么onCreate不运行?

public class ProximityBeacon extends Service
{
    private String server;
    private String ID;


    public ProximityBeacon(String server)
    {
        this.server=server;
        //TODO indirizzo del server
    }

    public void startBeaconDetecting(String ID, Intent intent, Context context)
    {
        this.ID=ID;
        context.startService(intent);
       }

    public void stopBeaconDetecting()
    {
        stopSelf();
        onDestroy();
    }

    public void onCreate()
    {
        super.onCreate();
        Log.i(TAG, "Oncreate");
    }

    public int onStartCommand(Intent intent, int flag, int startId)
    {
        Log.i(TAG, "onStartCommand"); 
        return Service.START_STICKY;
    }

}

2 个答案:

答案 0 :(得分:0)

startService(service)之后;将运行onStartCommand,而不是onCreate

答案 1 :(得分:0)

将您的服务类更改为:

public class ProximityBeacon extends Service
{
    private static final String TAG = "TAG";
    private String server;
    private String ID;

    public ProximityBeacon() {
    }

    public ProximityBeacon(String server)
    {
        this.server=server;
        //TODO indirizzo del server
    }

    public void startBeaconDetecting(String ID, Intent intent, Context context)
    {
        this.ID=ID;
        context.startService(intent);
    }

    public void stopBeaconDetecting()
    {
        stopSelf();
        onDestroy();
    }

    public void onCreate()
    {
        super.onCreate();
        Log.i(TAG, "ProximityBeacon Oncreate");
    }

    public int onStartCommand(Intent intent, int flag, int startId)
    {
        Log.i(TAG, "ProximityBeaconon StartCommand");
        return Service.START_STICKY;
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

}

然后使用它来调用它:

new ProximityBeacon("").startBeaconDetecting("" ,new Intent(HomeActivity.this, ProximityBeacon.class) ,mContext) ;

然后将它添加到manifest.xml中,如下所示:

<service android:name=".services.ProximityBeacon" />

输出:19:25:11.873 23002-23002 / com.sample.service I / TAG:ProximityBeaconon StartCommand