SOに関する私の最初の質問です。この質問が悪くないことを願っています。
私はサービスを持っています。ユーザーがアプリを起動すると機能し始め、ユーザーがタスクキラーを介してアプリを強制終了するか、デバイスの電源を切るまで機能します。
このサービスには、データを処理するバックグラウンドスレッドがあります。アクティビティをバインドする必要があり(サービスではなくアクティビティから)、場合によっては(30秒に1〜2回)バインドされたアクティビティにデータを送信します。
私のサービスの構造:
public class myserv extends Service {
public static boolean started=false;
public class workwithdata extends Thread {
@Override
public synchronized void start() {
super.start();
//.. Not important.
}
@Override
public void run() {
if (running) return;
while (true) {
if(condition) mythread.sleep(30000);
else {
Object data = recieveMyData();
if (!data.isEmpty()) {
//.. Some work with recieved data, not important.
sendDataToBindedActivities(data); //This is what I need.
}
mythread.sleep(10000);
}
}
}
}
@Override
public void onCreate() {
super.onCreate();
this.started=true;
mythread = new workwithdata();
mythread.start();
}
}
さて、私は1つの質問を見つけましたが、私の問題には少し違いがあります。サービスにデータを送信する必要はありません。バインドされたすべてのアクティビティ(サービスはまったく認識していません)にデータを送信するだけです。
私が探している構造:
public class myact extends Activity {
@Override
public void onCreate(Bundle bun) {
super.onCreate(bun);
if(!myserv.started) {
Intent service = new Intent(getApplicationContext(), myserv.class);
getApplicationContext().startService(service);
}
bindToService(this);
}
@Override
public void onRecievedData(Object data) {
//work with recieved data from service "myserv".
}
}
また、Androidのドキュメントでいくつかの解決策を見つけようとしましたが、必要なものが見つかりませんでした。
したがって、主な質問は、サービスからアクティビティまでのコミュニケーションを処理することは可能ですか?。いいえの場合:この目的のために何を使用する必要がありますか?はいの場合、申し訳ありませんが、コード名またはクラス名を尋ねることができます。検索しようとしましたが、検索しませんでした...
ありがとうございました。