Такой вопрос, в проекте я использую метод для проверки работы сервиса,я вынес его в отдельный класс с аннотацией @Module:
@Module
public class IsMyServiceRunning {
Context context;
public IsMyServiceRunning(Class<?> serviceClass,Context context) {
isMyServiceRunnin(serviceClass);
this.context = context;
}
public boolean isMyServiceRunnin(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager
.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
}
в главной активити я пишу:
public class MainActivity extends Activity implements SurfaceHolder.Callback {
@Inject
IsMyServiceRunning isMyServiceRunning;
Создал класс
@Module
public class AndroidModule {
Context context;
public AndroidModule(Context context) {
this.context = context;
}
@SuppressLint("ServiceCast")
@Provides
@Singleton
NotificationManagerCompat manager (Context context) {
return (NotificationManagerCompat) context.getSystemService(Context.NOTIFICATION_SERVICE);
}
@Singleton
IsMyServiceRunning isMyServiceRunning(Context context){
return ;//не знаю как правильно возвращать,а главное что именно
}
}
Проверить работоспособность на данном этапе не могу т.к много частей не реализовано, вот и уточняю, правильно ли использую Dependency Injection вот на этом примере? все ли я реализовал ?
UPDATE:
@Module
public class IsMyServiceRunning {
Context context;
public IsMyServiceRunning(Context context) {
this.context = context;
}
public boolean isMyServiceRunnin(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager
.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
}
Module:
@Module
public class AndroidModule {
Context context;
public AndroidModule(Context context) {
this.context = context;
}
@SuppressLint("ServiceCast")
@Provides
@Singleton
NotificationManagerCompat manager (Context context) {
return (NotificationManagerCompat) context.getSystemService(Context.NOTIFICATION_SERVICE);
}
@Singleton
IsMyServiceRunning isMyServiceRunning(Class<?> serviceClass){
return isMyServiceRunning(serviceClass);
}
}
Mainactivity:
@Inject
IsMyServiceRunning isMyServiceRunning;
В терминологии даггера есть такие понятия как компонент и модуль.
Модуль это та часть, которая отвечает за создание объектов, которые требует тот или иной компонент приложения.
Компонент это некоторый мост между модулями и классами которые требуют те или иные зависимости.
Исходя из этого вам необходимо создать модуль:
@Module
public class AndroidModule {
private final Context context;
public AndroidModule(Context context) {
this.context = context;
}
@Singleton
@Provide
IsMyServiceRunning isMyServiceRunning(){
return new IsMyServiceRunning(context);
}
// остальной код создания нужных объектов
}
Компонент:
@Component(modules = AndroidModule.class)
@Singleton
public interface ApplicationComponent {
void inject(MainActivity activity)
}
И дальше уже в activity можно попросить даггер предоставить необходимую зависимость:
public class MainActivity extends Activity implements SurfaceHolder.Callback {
@Inject
IsMyServiceRunning isMyServiceRunning;
public void onCreate(Bundle savedInstanse) {
super.onCreate(savedInstance);
ApplicationComponent component = // где то инитим и получаем компонент
component.inject(this);
}
}
Вообще уже написано достаточное количество статей по даггеру на том же самом хабре, советую ознакомиться.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем привет! У меня есть мини Джава чат с клиентом и серверомДело в том что я хочу добавить туда видео стриминг(вебинар) и аудио а сам понятия...
Делится ли число введенное с клавиатуры на его составляющие цифры?