意图服务永远不会被调用

Posted

技术标签:

【中文标题】意图服务永远不会被调用【英文标题】:Intent Service never getting called 【发布时间】:2011-11-06 05:42:09 【问题描述】:

我正在尝试 Intent 服务。我就是这样称呼它的

    Button updateLocation = (Button) findViewById(R.id.btnUpdateLocation);
        updateLocation.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View arg0) 
                // TODO Auto-generated method stub
                Intent updateLocIntent=new Intent(ImTracking.this,UpdateLocation.class);
                startService(updateLocIntent););

但是在我的 UpdateLocation 类中,它从来没有达到我的任何断点。

    public class UpdateLocation extends IntentService

    public UpdateLocation() 
        super("UpdateLocation");
    


    @Override
    protected void onHandleIntent(Intent intent) 

                SharedPreferences prefs = getSharedPreferences("Settings", 0);
                final String id = prefs.getString("ID", "");
                DefaultHttpClient httpclient = new DefaultHttpClient();
                HttpPost httpost = new HttpPost(
                        "http://iphone-radar.com/gps/gps_locations");

                JSONObject holder = new JSONObject();
...

发生了什么事?

谢谢

PS。我使用它是因为我想用警报管理器调用它。但是,在单击按钮时,我想显示一个进度对话框,我将在哪里放置意图服务的进度对话框? (到目前为止,我只有处理异步任务的经验)

【问题讨论】:

我不是这方面的专家,但您不需要注册您的接收器并为您希望捕获的特定意图设置一个过滤器吗?当我完成此操作后,我在代码中完成了它,但我认为它也可以在 Manifest/xml 中完成 你能给我举个例子吗?我不太清楚你所说的过滤器是什么意思 有时你在androidManifest.xml中给错了android:name,可能没有包名 【参考方案1】:

你在AndroidManifest.xml 中有declare your service 吗?除非这样声明,否则不会调用它:

<manifest ... >
  ...
  <application ... >
      <service android:name=".ExampleService" />
      ...
  </application>
</manifest>

【讨论】:

名称与清单标签中定义的package 相关。如果您的清单标记将package 定义为com.example,并且您的服务位于com.example.data 中,那么服务的名称将需要为.data.ExampleService【参考方案2】:

添加下面的行将允许您逐步完成服务。确保在不调试时将其删除。如果您不这样做,您的服务处理将在该点停止并且不会继续。

android.os.Debug.waitForDebugger();

【讨论】:

我是把这行放在 startservice 之前还是之后? 它进入你的 IntentService。将它放在断点之前或 onHandleIntent() 的开头

以上是关于意图服务永远不会被调用的主要内容,如果未能解决你的问题,请参考以下文章

xmppStreamDidConnect 永远不会在 Swift 中被调用

SSE:“onmessage”永远不会被调用

为啥 Asp.Net Core Kestrel 服务器向 Ngrok 返回 404 并且控制器永远不会被调用?

IOS:UITextInput 上的 Tokenizer 永远不会被调用

S3.putObject - 回调永远不会被调用

QAbstractItemModel data() 永远不会被调用