AndroidのアクティビティでServiceConnectionを使用してサービスをバインドする最善の方法は?

私はServiceConnectionで自分のアクティビティにバインドされているサービスを持っています。 このサービスは、アクティビティが作成され、BroadcastReceiverクラスで停止し、素晴らしい動作をすると開始されます。今、私は一定期間後にサービスを停止したいと思います。私のサービスクラスでTimerTaskを試していますが、正しく動作していないようです。

どんな提案や解決策も親切に評価されます。

ありがとう。

1

2 答え

独立したThread.soコンテキストとして扱われるタイマーは、サービスを停止しようとすると変更される可能性があります。私の解決策はPid of Currentサービスを取得し、Pidを使用してサービスを強制終了します。 android:process属性はandroidmanifest.xmlで指定されます。

プロセスプロセス= Runtime.getRuntime()。exec( "kill pid"); InputStreamは= process.getInputStream()です。

このコードは正常に動作します。一度試してみる

0
追加された

あなたのアプリで静的宣言:

static Intent local_Intent;

Appの作成時に、サービスの新しいインテントを割り当て、local_Intentにバインドする:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    local_Intent = new Intent(this, yourAppService.class);
}

local_Intentは静的であるため、local_Intentへの代入が記憶されます。 あなたがあなたのアプリケーションでサービスを開始したいとき

 startService(local_Intent);

あなたのアプリケーションでサービスを停止したいとき

 stopService(local_Intent);
0
追加された