我还是Android新手并且正在学习如何使用Intent Service在非UI线程上工作的课程。但是,当我打电话给意向服务时,似乎没有任何事情发生。
以下是来自MainActivity的Intent Service调用
startIntentService = (Button) findViewById(R.id.button4);
startIntentService.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View v){
Intent delayIntent = new Intent(getApplicationContext(),
DelayIntentService.class);
startService(delayIntent);
这是DelayIntentService代码
public class DelayIntentService extends IntentService {
public static final String ACTION_DELAY =
"hinz.don.hour5.action.DELAY";
public static final String EXTRA_MESSAGE =
"hinz.don.hour5.extra.MESSAGE";
public DelayIntentService() {
super("DelayIntentService");
}
@Override
protected void onHandleIntent (Intent intent){
SystemClock.sleep(5000);
Intent broadcastIntent = new Intent ();
broadcastIntent.setAction(ACTION_DELAY);
broadcastIntent.putExtra(EXTRA_MESSAGE, "UPDATED USING INTENT SERVICE");
sendBroadcast(broadcastIntent);
以下是Manifest文件中的服务声明:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hinz.don.hour5">
<service android:name="hinz.don.Hour5.DelayIntentService"></service>
我在Intent Service代码上放置了一个调试中断,但它从不执行它
答案 0 :(得分:0)
在您的代码中,与package =“hinz.don.hour5”和“hinz.don.Hour5.DelayIntentService”存在未命中匹配。用作hours5的包和用作Hours5的服务名称。
最好使用它
<service android:name=".DelayIntentService" />
这将消除歧义
答案 1 :(得分:0)
在主活动声明之后,需要将Service声明置于Manifest文件的底部。一旦我移动它一切正常。
答案 2 :(得分:0)
你的Xml应该是这样的
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hinz.don.hour5">
<applcation .......>
<service android:name="hinz.don.hour5.DelayIntentService"></service>
</application>
如果这不起作用 参考