我正在使用startService在我的应用程序中启动服务.
我不想使用bindService,因为我想自己处理服务的生命周期.
如果我不使用bindService,如何才能获得启动服务的实例?我希望能够获得我在服务类中创建的处理程序来发布来自活动的消息.
谢谢.
/亨利克
Com*_*are 16
我不想使用bindService,因为我想自己处理服务的生命周期.
这并不意味着你必须避免bindService().同时使用startService()和bindService()如果需要的话.
如果我不使用bindService,如何才能获得启动服务的实例?
或者使用bindService()与startService(),或使用一个单例.
这是另一种方法:
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class MyService extends Service {
private Binder binder;
@Override
public void onCreate() {
super.onCreate();
binder = new Binder();
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
public class Binder extends android.os.Binder {
public MyService getService() {
return MyService.this;
}
}
}
Run Code Online (Sandbox Code Playgroud)
onServiceConnected(...)可以将其参数强制转换为MyService.Binder并调用getService()它。这样可以避免潜在的内存泄漏,因为它无法静态引用服务。当然,您仍然必须确保您的活动没有挂在参考上。
| 归档时间: |
|
| 查看次数: |
25339 次 |
| 最近记录: |