繁体   English   中英

Java - 接口 - 如何在多个活动中一起分配特定接口

[英]Java - Interface - How do I assign a specific interface in multiple activities all together

我有一个有interfaceservice ,我在多个activitiesimplementing interface callback ,但是因为我在每个activity's onCreate上调用应用程序instance ,所以interfaces只响应当前activity 我如何确保他们在每项activity中都协同工作。

MyApp.java

public class MyApp extends Application {

    private static MyApp myApp;

    @Override
    public void onCreate() {
        super.onCreate();
        myApp = new MyApp();
    }

    @Contract(pure = true)
    public static synchronized MyApp getInstance() {
        MyApp myApp;
        synchronized (MyApp.class) {
            myApp = MyApp.myApp;
        }
        return myApp;
    }

    public void setCallBackListener(MyService.ReceiversCallbacks receiversCallbacks) {
        MyService.receiversCallbacks = receiversCallbacks;
    }
}

MyService.java

public class MyService extends Service {

    public static MyService.ReceiversCallbacks receiversCallbacks;

    public MyService() {
        super();
    }

    public interface ReceiversCallbacks {
        void onReceiveCallbacks(String data);
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Notification notification = new NotificationCompat.Builder(this, NOTIFICATION_ID)
                .setContentTitle("Background service")
                .setSmallIcon(R.drawable.ic_launcher)
                .build();
        startForeground(1, notification);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (MY_LOGIC) receiversCallbacks.onReceiveCallbacks("DATA_FROM_MY_LOGIC");

        //stopSelf();
        return START_NOT_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

ActivityA.java

public class ActivityA extends AppCompatActivity implements MyService.ReceiversCallbacks {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
         MyApp.getInstance().setCallBackListener(this);
    }

    @Override
    public void onReceiveCallbacks(String data) {
           // calling important functions
    }
}

ActivityB.java

public class ActivityB extends AppCompatActivity implements MyService.ReceiversCallbacks {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
         MyApp.getInstance().setCallBackListener(this);
    }

    @Override
    public void onReceiveCallbacks(String data) {
           // calling important functions
    }
}

当我这样做时,每个活动的onCreate MyApp.getInstance().setCallBackListener(this); 回调的焦点转移到新活动上。 但是我想同时关注两个或多个活动,我该怎么做? 我想要的解决方案有更好的方法吗?

请注意这些:

  • 我不想调用这些函数onResume
  • 我不想使用Broadcasts

我只是为每个活动创建了不同的接口并将它们注册到相应的活动中,并且它们工作了!

MyApp.getInstance().setCallBackListener(this);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM