2016-12-21 11 views
-2

私のアプリを完全に閉じると、MultiplyTaskというメソッドrunInBackGroundが機能しなくなることに気付きました。アクティビティがフェーズSTOPまたはPAUSEにあるときに機能しますが、アプリケーションを終了すると、メソッドは終了します(サイクルはwhile(true) {...}で作成されたループです)。 Whatsappは通知を送信するにはどうすればよいですか?私は似たようなものを作りたい。ありがとう!Android:確定したときにアプリを起動する

答えて

0

アプリを閉じると、すべてのコードの実行が停止します。アプリが開いている間に実行したい場合は、アプリが終了している間にコードを実行し続けるとよいでしょう。using a Service.

サービスマニュアルを徹底的に見ていただければ幸いです。 サービスが終了するとサービスも終了しますが、START_STICKYの戻り値を使用すると、終了時にサービスが再開されるようにすることができます。より多くの情報を

EDIT:

<service 
    android:name="MyService" /> 

があなたのAndroidManifest.xml

public class MyService extends Service { 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
      // This is where you would place your code that you want in the background 
      // Putting your while loop here will make sure it runs when the app is closed 
      return Service.START_STICKY; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     //TODO for communication return IBinder implementation 
    return null; 
    } 
} 

に上記を追加し、上記のコードで新しいクラスを作成します。

Intent i= new Intent(context, MyService.class); 
startService(i); 

ランチャーアクティビティからこのコードを呼び出して、アプリ起動時にサービスを開始します。

希望すると便利です。

+0

このSTART_STICKYはどのように使用できますか? – Tosch

+0

@Tosch私の編集した投稿を参照してください –

+0

私は私の問題を解決しました、ありがとう! – Tosch

0

Asynctaskは、バックグラウンドで実行する必要がある短い操作に最適です。通常、Asyntaskは、アプリケーションの終了時に破棄されるアクティビティのサブクラスとして実装されます。また、いくつかの点でUIスレッドと通信するので、メモリ内にアクティビティが必要です...長時間実行する場合は、サービスが優れています。一部のアプリは、実行していないときでもユーザーに通知します。実際、彼らは1つ以上のサービスをバックグラウンドで実行しています。あなたはあなたの携帯電話の設定 - >アプリメニューでそれらを見ることができます。サービスの詳細については、 thisをご覧ください。

関連する問題