2017-01-30 9 views
1

私のAndroidアプリケーションは(私の活動と同じプロセスで)ローカルなフォアグラウンドサービスを開始します。 しかし、システムはメモリが少ないためにアクティビティを破棄しますが、フォアグラウンドサービスは有効なままです。既存のプロセスでのアンドロイドの開始

次回ユーザーがアプリを起動すると、新しいプロセスが開始されます。 既存のフォアグラウンドサービスが、この新しく作成されたプロセスにバインドされる方法はありますか?古い破壊されたプロセスはバインドされませんか?

私が考えているオプションの1つは、プロセス間通信を採用することです。を避けたいのですが、複雑さが高いためを避けてください。そうする他の方法はありますか?

+1

"それは新しいプロセスを開始します" - 通常ではありません。なぜそれがそれをする唯一の理由は、マニフェストで 'android:process'属性を使用している場合です。あなたがいて、あなたがそれらを望んでいない場合は、それらを取り除く。 – CommonsWare

答えて

0

ありがとうございました。CommonsWareキューのため。 documentationから

:デフォルトでは

、同じアプリケーションと同じ プロセスで実行し、スレッドのすべてのコンポーネント(「メイン」スレッドと呼ばれます)。アプリケーション コンポーネントが起動し、そのアプリケーションのプロセスが既に存在する場合(アプリケーションの別のコンポーネントが存在するため)、 コンポーネントはそのプロセス内で起動され、同じ 実行スレッドを使用します。

期待どおりに動作します。私はアンドロイド開発の初心者であり、それを知らなかった。

2回目はAndroidスタジオからデバッグとしてアプリケーションを起動し、プロセスを再作成しました。これが私が混乱した理由です。

関連する問題