7

Serviceアクティビティではなく、アプリの起動時にを起動したい。そして、サービスが起動すると言いましan Activityた。私のアプリは常に実行する必要があるため、これを行う必要があります。常にというときは、常にという意味です。そして、OS がアプリを強制終了するのを回避する唯一の方法は、Sticky としてサービスを開始することです。Android がアクティビティまたはサービスを強制終了した場合、すぐに再起動します。

私はこの質問を見つけましたが、一番の答えはかなり不器用に思えます.だれかがより良い考えを持っていますか?

PS: これはあまり使いやすいアプリではないように見えますが、これは非常に具体的な研究シナリオであり、通常のユーザーを対象としたものではありません。つまり、電話はこの目的でのみ使用されます。しかし、メモリが私のアプリ専用であっても、Android は時々それを殺し続けます... Android の厳密なメモリ管理スキームとされていることについて私が持っていたかもしれない疑問は、今ではなくなりました。

4

1 に答える 1

13

一般に、アクティビティは UI を表示する必要はありません。通常は表示されますが、必須ではありません。したがって、アプリの開始点を「見えない」アクティビティに設定するだけです。そして目に見えないということは、次のいずれかをテーマにしたことを意味します

android:theme="@android:style/Theme.NoDisplay"

または単にコードは何も実行せずsetContentView()、 でジョブが完了したらonCreate()、別のアクティビティを開始してこれを終了しfinish()ます - そのアクティビティから UI がポップアップしません - そうすれば、アクティビティ サブクラスでジョブを実行することから簡単に利益を得ることができます。 (一部のタスクではより簡単かもしれません) それでも UI は必要ありません。

public void onCreate(Bundle bundle) {
   super.onCreate(bundle);

   // [... do your job here...]

   // we're done, so let's jump to another acitivity
   // this can be skipped if you do not want to jump anywhere

   Intenet intent = new Intent(....)
   ...

   try {
      startActivity( intent );

      // finish him
      finish();

   } catch ( Exception e ) {
      e.printStackTrace();
   }

}
于 2012-10-10T10:38:06.617 に答える