0

我有一项服务,用于在用户不做其他事情时上传选定的文件。它在我的应用程序告诉它时开始,当我的应用程序告诉它时它停止。但是由于某种原因,在使用其他应用程序时,我会在看似随机的时间收到我的服务启动通知。有没有办法确定是什么告诉我的服务开始?

它是标准服务,因为它扩展了服务,并绑定到我的 UploadScreenActivity。

onCreate 非常简单:

public void onCreate() {
    instance = this;
    if(connectivityManager == null){
            connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    }
    mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

    Toast.makeText(this, "Service started", Toast.LENGTH_SHORT).show();
}

在浏览其他应用程序时,“服务已启动”通知会在看似随机的时间出现。

我的服务代码基于服务文档中的本地服务示例:http: //developer.android.com/reference/android/app/Service.html

4

2 回答 2

0

系统不会自行启动您的服务。该应用程序是否在广播接收器中侦听外部的任何内容?如果没有,您必须在代码中的某个地方启动它。我会加强日志记录并密切关注它。或者将事件发布到错误日志服务(bugsense、acra 等)。

您的代码的哪些部分启动服务?我会从那里开始。奥卡姆剃刀。

于 2012-12-03T05:11:07.603 回答
0

您是否为您的服务定义了一个意图过滤器,允许其他应用程序隐式启动您的服务。来自 android 开发者的这个参考也可能会有所帮助: android:exported 其他应用程序的组件是否可以调用服务或与之交互 - 如果可以,则为“true”,否则为“false”。当值为“false”时,只有相同应用程序的组件或具有相同用户ID的应用程序才能启动服务或绑定到服务。

于 2012-12-03T05:36:01.297 回答