我正在实现以下代码,我想在其中使用广播接收器启动服务。广播接收器中的 toast 工作正常,但服务没有执行。
谁能告诉我我哪里出错了?

MyReceiver.class 
public class MyReceiver extends BroadcastReceiver { 
 
    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
        // TODO Auto-generated method stub 
        //Toast.makeText(arg0, "Service", Toast.LENGTH_LONG).show(); 
        Intent myIntent = new Intent(arg0,MyS.class); 
        arg0.startService(myIntent); 
    } 
} 
 
 
MyS.class 
public class MyS extends Service { 
 
    @Override 
    public IBinder onBind(Intent arg0) { 
        // TODO Auto-generated method stub 
        return null; 
    } 
 
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
        // TODO Auto-generated method stub 
        Toast.makeText(getBaseContext(), "Service started", Toast.LENGTH_LONG).show(); 
        return START_STICKY; 
    } 
} 
 
 
AndroidManifest.xml 
 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.test.p" 
    android:versionCode="1" 
    android:versionName="1.0" > 
 
    <uses-sdk android:minSdkVersion="8" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
 
    <application 
        android:icon="@drawable/ic_launcher" 
        android:label="@string/app_name" > 
       <service android:enabled="true" 
           android:name=".MyS" > 
           <intent-filter> 
               <action android:name="com.test.p.MyS" > 
               </action> 
           </intent-filter> 
       </service> 
 
       <receiver android:enabled="true" 
           android:name=".MyReceiver" > 
           <intent-filter> 
               <action android:name="android.intent.action.BOOT_COMPLETED"/> 
           </intent-filter> 
       </receiver> 
    </application> 
 
</manifest> 

请您参考如下方法:

在您的事件中,创建一个 BroadcastReceiver 变量

    private BroadcastReceiver mBootCompletedReceiver = new BroadcastReceiver() { 
        @Override 
        public void onReceive(Context context, Intent intent) { 
               // start your service right here...  
        } 
    }; 

onCreateonResume Activity事件你应该注册 BroadcastReceiver
super.registerReceiver(mBootCompletedReceiver, new IntentFilter("android.intent.action.BOOT_COMPLETED")); 

和 onDestory 或 onStop 或 onPause 无论您在何种情况下都应取消注册此 BroadcastReceiver 以不再接收此更新。
super.unregisterReceiver(mBootCompletedReceiver); 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!