Android IntentService不启动

我知道这个问题已经被问了很多次,但其他所有的线程都没有解决我的问题,我看不出我的代码有什么问题。 也许我在这里错过了一些东西,有人能帮我吗?

意向服务代码:

package Services; import android.app.IntentService; import android.content.Intent; import android.widget.Toast; public class WifiSearchService extends IntentService { /** * A constructor is required, and must call the super IntentService(String) * constructor with a name for the worker thread. */ public WifiSearchService() { super("WifiSearchService"); } @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); } /** * The IntentService calls this method from the default worker thread with * the intent that started the service. When this method returns, IntentService * stops the service, as appropriate. */ @Override protected void onHandleIntent(Intent intent) { // Normally we would do some work here, like download a file. // For our sample, we just sleep for 5 seconds. long endTime = System.currentTimeMillis() + 5*1000; while (System.currentTimeMillis() < endTime) { synchronized (this) { try { wait(endTime - System.currentTimeMillis()); } catch (Exception e) { } } } } } 

通过轻按开关启动服务:

 package com.cdobiz.wifimapper; import Services.WifiSearchService; import android.os.Bundle; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.content.Context; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.Switch; public class MainActivity extends Activity { private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this; setContentView(R.layout.activity_main); Switch serviceSwitch = (Switch) this.findViewById(R.id.switchService); serviceSwitch.setChecked(isMyServiceRunning()); serviceSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton view, boolean state) { if(state){ startService(new Intent(context, WifiSearchService.class)); }else{ stopService(new Intent(context, WifiSearchService.class)); } } }); } private boolean isMyServiceRunning() { ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { Log.v("debug", service.service.getClassName()); if ("com.cdobiz.wifimapper.services.WifiSearchService".equals(service.service.getClassName())) { return true; } } return false; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

performance:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cdobiz.wifimapper" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.cdobiz.wifimapper.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:enabled="true" android:name=".services.WifiSearchService"></service> </application> </manifest> 

Solutions Collecting From Web of "Android IntentService不启动"

我可以通过将包名更改为com.cdobiz.wifimapper.services来运行您的服务,并更改清单中服务的包名称。

我通过确保服务在App-Manifest中注册来解决问题。

我有同样的问题。 我通过复制类内容代码文本来解决它。 然后我删除类,并通过右键单击包 – >新build – >服务 – >服务(意图)再次创build相同的类然后我粘贴相同的代码到类,它的工作原理。

我希望这会对某人有帮助

我解决了我的意图服务不开始使用的问题

 Intent intent = new Intent(this,UploadService.class); this.startService(intent); 

开始我的服务

我有同样的问题。 为了解决这个问题,我删除了Intenservice类,而不是创build一个新的类:右键单击>新build>服务>服务(IntentService)