代码之家  ›  专栏  ›  技术社区  ›  hossam scott

每次触发BackgroundService时在Mainactivity中获取更新

  •  -2
  • hossam scott  · 技术社区  · 7 年前

    我有

    public class Backgroundservice implements AlarmReceiverCallback {
    private Context context;
    
    public Backgroundservice(Context context) {
        this.context = context;
    }
    
    @Override
    public void onAlarmReceived() {
       //interface trigger
    }}
    

    现在我想说 在我的 主要活动 扩展的类 AppCompative活动

    因此,一旦Backgroundservice中的接口触发,我就可以在mainactivity中使用我的方法

    2 回复  |  直到 7 年前
        1
  •  1
  •   V-rund Puro-hit    7 年前

    你可以用 BroadCastReceiver

    在你的服务课上

    public class Backgroundservice implements AlarmReceiverCallback {
        private Context context;
    
        public Backgroundservice(Context context) {
            this.context = context;
        }
    
        @Override
        public void onAlarmReceived() {
    
           // send broadcast from here
           Intent intent  = new Intent("alaram_received");
           context.sendBroadcast(intent);
        }
    

    在你的主要活动中接收这个广播。

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // Register Receiver
            IntentFilter intentFilter = new IntentFilter("alaram_received");
            registerReceiver(alarm_receiver,intentFilter); 
        }
    
        BroadcastReceiver alarm_receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                // refresh Token
            }
        };
    }
    

    快乐的编码。

        2
  •  0
  •   hossam scott    7 年前

    我设法通过创建新的接口使它工作

    public interface ReceiverCallback {
    public void onReceived();}
    

    在我的主活动中实现,而不是在其中创建新对象

        @Override
    public void onReceive(Context context, Intent intent)