2017-09-30 15 views
-1

我要當引導運行應用程序服務器允許接收消息的任何時間如何在啓動時開始應用,並允許運行像WhatsApp的

不顯示應用

這段代碼的問題,當啓動顯示通知兩次只 但我想收到消息的任何時間

這是「機器人:出口」重要的是,用什麼

代碼AndroidManifest

 <service 
     android:name=".appService" 
     android:exported="true" 
     android:enabled="true"> 
     </service> 

    <receiver 
     android:name=".ServiceStarterBoot" 
     android:enabled="true" 
     android:exported="true"> 

     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </receiver> 

代碼廣播接收器

public class ServiceStarterBoot extends BroadcastReceiver { 

private Context context ; 
@Override 
public void onReceive(Context context1, Intent intent) { 
    this.context = context1; 

    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { 
     Intent serviceLauncher = new Intent(context, appService.class); 
     context.startService(serviceLauncher); 
    }} 

代碼服務

public class appService extends Service {  
@Override 
public void onCreate() { 
    super.onCreate(); 
    lood(); 
} 
    @Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    throw new UnsupportedOperationException("Not yet implemented"); 
    //return mBinder; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    Toast.makeText(this, "onStartCommand", Toast.LENGTH_SHORT).show(); 
    return super.onStartCommand(intent, flags, startId); 
} 


private void lood(){ 
    SystemClock.sleep(3000); 

    Runnable runnable = new Runnable() { 
     public void run() { 
      boolean p= true ; 
      while(p) { 
       SystemClock.sleep(5000); 
       showNotification(); 
      } 
     } 
    }; 
    Thread mythread = new Thread(runnable); 
    mythread.start(); 
} 

請幫助 感謝

回答

0

你必須讓你的服務粘性:

Service.START_STICKY

那麼它是無限的,並且由於任何原因被操作系統殺死時重新啓動。

它甚至在啓動OS和應用程序不被用戶打開時自動啓動。

此致敬禮。

+0

啓動後只顯示通知兩次,我該怎麼辦? – emad

+0

這是正常行爲。你的服務的任務是製作一個線程。服務完成它然後任務完成。您必須實現服務的偵聽器。例如狀態改變監聽器。當一個狀態改變時。該服務將獲得狀態並激發您的方法。 – Dareyou

+0

程序打開並且服務器正在運行時沒有問題, 問題是服務器在啓動時運行 – emad

0

僞代碼:

onStartCommand(..){ 

...

//e.g。 wifilisterner Wifilistener WF = new Wifilistener(Interface yourInterfaceCallBackMethod);

}

這樣的事情。

相關問題