-1

サービスまたはスレッドを拡張する抽象クラスを作成しようとしています。これは、フォアグラウンド アクティビティを見つけるために、このクラスを毎秒実行する必要があるためです。そのサービスがRunnableを使用している場合、Handlerを使用して毎秒実行します。しかし、メイン アクティビティからサービスまたはスレッドを開始できません。抽象クラスをインスタンス化できないことは知っていますが、ここで使用できる回避策はありますか?? 助けてください。

    public abstract class A extends Service Implements Interface {
    public void onCreate() {
        super.onCreate();
        mHandler.postDelayed(runnable, 1 * 1000);
}
   protected abstract void getData();

   public Runnable runnable = new Runnable() {
        public void run() {

        //Trying to find Foreground Activities

        A start = new B();
        start.getData();

mHandler.postDelayed(runnable, 1 * 1000);
 }
};

//Inteface methods defined here.
}

別のクラス:

public class B extends A {

    public void getData() {
      //Do my stuff
    }
}

この抽象メソッドを、A を拡張したどのクラスでも実行できるように、この A クラスを呼び出す必要があります。

4

1 に答える 1

1

抽象クラス (の匿名サブクラス) をインスタンス化するには:


abstract class AbstractClass {}

public class MyActivity extends Activity {
   public void onCreate(Bundle i) {
      AbstractClass abstractInstance = new AbstractClass(){};
   }
}

実際には、これを行う必要はありません。私が提案するのは、ScheduledExecutorServiceを使用した単純な JavaSE 同時実行ベースのアプローチです。

于 2013-05-31T12:01:43.510 に答える