2013-06-10 31 views
6

Tôi đang triển khai mã sau, trong đó tôi muốn bắt đầu dịch vụ bằng cách sử dụng bộ thu phát sóng. Các bánh mì nướng trong máy thu phát sóng đang làm việc tốt nhưng dịch vụ không thực hiện. Có ai cho tôi biết tôi đã đi sai không?Dịch vụ khởi động Android sử dụng bộ thu phát sóng

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> 
+0

Bạn nên đăng ký chương trình phát sóng để nhận cập nhật và hủy đăng ký khi không sử dụng hoạt động. \t \t 'super.registerReceiver (mLoggedOutReceiver, new IntentFilter (LOG_OUT_ACTION));' – nesimtunc

+0

Tôi đã thử cả hai cách..đăng ký trong tệp kê khai android và trong lớp Dịch vụ vẫn chưa bắt đầu. Bạn có thể gửi mã mẫu hoặc liên kết về cách thực hiện việc này không? – Spike

+0

Câu trả lời có phù hợp với bạn không? http://stackoverflow.com/questions/4641712/starting-service-from-broadcastreceiver –

Trả lời

-1

Trong hoạt động của bạn, tạo ra một BroadcastReceiver biến

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

onCreate hoặc onResume sự kiện của Activity bạn nên đăng ký cho rằng BroadcastReceiver

super.registerReceiver(mBootCompletedReceiver, new IntentFilter("android.intent.action.BOOT_COMPLETED")); 

và onDestory hoặc onStop hoặc onPause bất cứ điều gì bạn trong tình huống nên hủy đăng ký BroadcastReceiver này vì không nhận được bản cập nhật này nữa.

super.unregisterReceiver(mBootCompletedReceiver); 
-3

Dịch vụ sẽ chỉ bắt đầu khi có phương thức đánh lừa được gọi là coz u đã cho dịch vụ startervice bên trong phương thức nhận. Điều đó có nghĩa, u phải bắt đầu một số hoạt động nhận như gọi hoặc sms để bắt đầu dịch vụ. U có thể bắt đầu dịch vụ khi khởi động. Google nó.

Các vấn đề liên quan