Активность Android без графического интерфейса

Ну, вы уже сами дали ответ; вам нужно дождаться завершения создания файла. Один из способов сделать это - проверить, сохраняется ли файл. Пример этого можно найти здесь: Есть ли способ проверить, используется ли файл?

Обратите внимание, что вам придется изменить этот код, чтобы он работал в ваша ситуация. Возможно, вы захотите иметь что-то вроде (псевдокода):

public static void listener_Created()
{
   while CheckFileInUse()
      wait 1000 milliseconds

   CopyFile()
}

Очевидно, что вы должны защитить себя от бесконечного while, если приложение владельца никогда не освобождает блокировку. Кроме того, возможно, стоит проверить другие события из FileSystemWatcher, на которые вы можете подписаться. Может быть событие, которое вы можете использовать, чтобы обойти эту проблему.

29
задан Swati Garg 3 October 2017 в 01:13
поделиться

3 ответа

Казалось бы, ваша лучшая ставка - использовать BroadcastReceiver. Вы можете создать новый BroadcastReceiver, который прослушивает Intent для запуска вашего уведомления и запускает вашу службу следующим образом:

public class MyIntentReceiver extends BroadcastReceiver {    
  @Override 
  public void onReceive(Context _context, Intent _intent) {
    if (_intent.getAction().equals(MY_INTENT)) {
      // TODO Broadcast a notification
      _context.startService(new Intent(_context, MyService.class));
    }
  }    
}

И вы можете зарегистрировать этот IntentReceiver непосредственно в манифесте приложения без необходимости включать его в Activity :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.domain.myapplication">
  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <service android:enabled="true" android:name="MyService"></service>
    <receiver android:enabled="true" android:name="MyIntentReceiver">
      <intent-filter>
        <action android:name="MY_INTENT" />
      </intent-filter>
    </receiver>
  </application>
</manifest> 
19
ответ дан Pratik 3 October 2017 в 01:13
поделиться

Воспользуйтесь сервисом. Я работаю определенно. Когда вы нажимаете на программу, она будет работать без графического интерфейса. Используйте pendintgintent ... getService (MySerice.class ....). Затем создайте новый класс MyService, расширяющий класс Service. Внутри MyService.class переопределите onStart () и делайте все, что хотите.

3
ответ дан Manoj 3 October 2017 в 01:13
поделиться

Я не уверен, что служба будет работать, но приемник вещания определенно не будет. URL запускаются с помощью startActivity (). Приемники вещания не могут ответить на это.

http://developer.android.com/reference/android/content/BroadcastReceiver.html

FTA: обратите внимание, что хотя класс Intent используется для отправки и получения этих широковещательные рассылки, механизм рассылки намерений здесь полностью отделен от интентов, которые используются для запуска операций с Context.startActivity (). BroadcastReceiver не может увидеть или захватить Intents, используемый с startActivity (); аналогично, когда вы транслируете Намерение, вы никогда не найдете или не начнете Активность.

4
ответ дан lukejduncan 3 October 2017 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: