2017-03-25 16 views
0

メインアプリサービスを終了すると、ブロードキャストインテントが停止します。間違いはどこですか?私はそれを実行し続ける方法を見つけることができません。メインアプリが閉じたときにサービスが終了します

放送recevier:

public class CustomReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "Custom Broadcast recevied", Toast.LENGTH_SHORT).show(); 
}} 

サービス(AAA.java):

public class AAA extends Service { 
final class MyThreadClass implements Runnable { 
    int service_id; 
    MyThreadClass(int service_id) { 
     this.service_id = service_id; 
    } 

    @Override 
    public void run() { 
     synchronized (this) { 
      try { 
       while (true) { 
        Thread.sleep(3000); 

        Intent i = new Intent(); 
        i.setAction("cz.johnyapps.custombroadcast"); 
        sendBroadcast(i); 
       } 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Thread thread = new Thread(new MyThreadClass(startId)); 
    thread.start(); 

    return START_STICKY; 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
}} 

マニフェスト:

<service android:name="cz.johnyapps.notificationservice.AAA" 
     android:exported="true" 
     android:process=":ServiceProcess"/> 

主な活動:STARTSERVICE(新しいテント(これ、AAA.class ));

答えて

0

使用、このような行動を防ぐために、サービス内のstartForeground方法

+0

通知が表示されると機能します。しかし、私は通知なしでそれを必要とします。 –

+0

あなたのプロセスが殺されないように、フォアグラウンドプロセスを使用する必要があります。 – Vyacheslav

+0

@HonzaJohnyPejsar bytheway、Start_stickyフラグ – Vyacheslav

0

私の知識によると、一つの方法でもアプリを閉じた後に実行されているサービスを作ることです。

サービスをバインドするアプリに通知する必要があります。アプリが閉鎖されている場合は、そのサービスにバインドされる という通知が添付されます。

例:あなたはアプリを閉じた場合にアプリを遊んでAndroidの携帯電話のデフォルトのメディアのサウンドは、通知がサービスで音楽再生を維持するためにサービスを維持し、通知バーに表示されます。

+0

私は通知なしでそれを必要とします –

+0

それからあなたは常にそのサービスを生かしているスレッドを追加する必要があります。 –

+0

どうすればいいですか? –

関連する問題