したがって、明らか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()
は機能しません。サービスが実行されているかどうかを確認し、サービスへの参照を取得する方法はありますか?