从Service类调用活动类方法我在SO中看过很多关于此的帖子,但无法从服务类调用一个活动方法的确切和最简单的方法。广播接收器只是选项吗?没有捷径 ?我只需要在Service类中准备好媒体播放器后在Activity类中调用以下方法。活动类: public void updateProgress() {
// set Progress bar values
songProgressBar.setProgress(0);
songProgressBar.setMax(100);
// Updating progress bar
updateProgressBar();}服务类: @Overridepublic IBinder onBind(Intent intent) {
Log.d(this.getClass().getName(), "BIND");
return musicBind;}@Overridepublic boolean onUnbind(Intent intent) {
return false;}
@Overridepublic void onPrepared(MediaPlayer mp) {
try {
mp.start();
} catch (IllegalStateException e) {
e.printStackTrace();
}
// updateProgress();// Need to call the Activity method here
}
3 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
我创建了一个名为Delegate的通用类(它不是一个特殊的名称,你可以将它命名为John)并将MainActivity类作为静态字段传递给它。然后,我现在可以从服务中访问它。我不确定它是否具有成本效益,但它解决了我的问题。
我的服务:
package com.some.package;import com.google.firebase.iid.FirebaseInstanceId;import com.google.firebase.iid.FirebaseInstanceIdService;public class FirebaseInstanceIDService extends FirebaseInstanceIdService { @Override public void onTokenRefresh() { String token = FirebaseInstanceId.getInstance().getToken(); Delegate.theMainActivity.onDeviceTokenChange(token); }}
代表班:
package com.some.package;public class Delegate { static MainActivity theMainActivity;}
我在MainActivity中做了什么:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Delegate.theMainActivity = this; //rest of the code...}public void onDeviceTokenChange(String token){ Log.e("updated token:", token);}
- 3 回答
- 0 关注
- 557 浏览
添加回答
举报
0/150
提交
取消