因此显然Handlers
应该声明为静态的,否则它们可能会泄漏其外部类(以及随之而来的应用程序上下文)。这显然限制了您可以使用Handler
. 看一下这段代码:
public class MyService extends Service {
private int counter;
private static final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// Increment counter here
}
};
@Override
public void onCreate() {
super.onCreate();
counter = 0;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handler.sendEmptyMessage(0);
return Service.START_STICKY;
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
静态处理程序不能保存对服务的引用,因此简单的counter++
内部handleMessage()
将无法工作。有没有办法检查服务是否正在运行并获得对它的引用?