我刚刚开始开发android并且一直在阅读有关服务here的内容。我已经创建了一个服务,然后我尝试在一个活动中启动,但我无法解决为什么它不会显示Toast通知。
我有以下活动:
package com.example;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class Example extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Context context = getApplicationContext();
Intent intent = new Intent(context, MService.class);
startService(intent);
setContentView(R.layout.main);
}
}
在我的清单中我有这个:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1.0">
<application android:label="example" android:icon="@drawable/icon">
<activity android:name="Example"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<service android:name=".MService" />
</activity>
</application>
然后我的服务看起来像这样:
package com.example;
import android.app.IntentService;
import android.content.Intent;
import android.widget.Toast;
public class MService extends IntentService {
public MService() {
super("MService");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent,flags,startId);
}
@Override
protected void onHandleIntent(Intent intent) {
Toast.makeText(this, "Systems starting", Toast.LENGTH_SHORT).show();
}
}
我知道你的意思并不是要覆盖onStartCommand,但这更像是测试练习,因为我也没试过
答案 0 :(得分:0)
尝试在onStartCommand
内反转行的顺序 - 将super
调用分配给int
变量,弹出Toast然后返回该变量。即使这不起作用,它也是覆盖方法的首选方式。
答案 1 :(得分:0)
服务是清单中活动的子项,因此无法找到服务。
答案 2 :(得分:0)
您可以使用这一行代码直接从活动启动服务类。
startService(new Intent(getBaseContext(),MyService.class));