2016-03-21 3 views
-1

У меня есть приемник внутри службы. Как объявить получателя в манифесте? Мне нужен приемник, поскольку у меня есть запланированная тревога. Как я объявил получателя в сервисе? код ниже. Правильно ли логика/синтаксис? Код в приемнике выполняется только один раз. Зачем? что может быть вопросомКак объявить приемника внутри службы в манифесте?

package com.todaysfuture.dynpin; 


/** 
* Created by rishabh on 14/2/16. 
*/ 
public class MyService extends Service { 

@Override 
public void onCreate() { 
    // TODO Auto-generated method stub 
    super.onCreate(); 
    //does some stuff 


    final BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      { 
       //does some stuff 
      } 
     } 
    }; 
    registerReceiver(receiver, filter); 

} 
@Nullable 
public IBinder onBind(Intent intent) { 
    return null; 
} 

}

+1

не держат такие запутанные названия. Почему вы назвали свой класс обслуживания в качестве приемника? –

+0

Не следите за кодом. Имейте понимание соглашения об именах, области calss/method/variable и т. Д. Здесь область BroadcastReceiver находится внутри метода. Если задание завершено, вам необходимо обратиться к получателю, чтобы отменить регистрацию. – Isham

+0

эй. изменил его здесь – AxeManTOBO

ответ

0

вложу здесь пример того, что вы просили.
Пример: прослушивание экрана вкл./Выкл.
Надеюсь, что это поможет.

Услуги:

public class MyService extends Service { 
    private final BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      boolean res; 
      if (action.equals("android.intent.action.SCREEN_ON")) { 
       res = true; 
      } else if (action.equals("android.intent.action.SCREEN_OFF")) { 
       res = true; 
      } 
     } 
    }; 

    @Override 
    public void onCreate() { 
     Toast.makeText(this, "The new Service was Created", Toast.LENGTH_LONG).show(); 
     IntentFilter filter = new IntentFilter(); 
     filter.addAction("android.intent.action.SCREEN_ON"); 
     filter.addAction("android.intent.action.SCREEN_OFF"); 

     registerReceiver(receiver, filter); 
    } 

    @Override 
    public void onStart(Intent intent, int startId) { 
     // For time consuming an long tasks you can launch a new thread here... 
     Toast.makeText(this, " Service Started", Toast.LENGTH_LONG).show(); 

    } 

    @Override 
    public void onDestroy() { 
     Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show(); 
     unregisterReceiver(receiver); 
    } 

    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 
} 

активность, что запуск службы:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     startService(new Intent(this, MyService.class)); 
    } 
} 

Manifest:

<manifest package="com.test.myapplication" 
      xmlns:android="http://schemas.android.com/apk/res/android"> 

    <action android:name="android.intent.action.SCREEN_OFF"></action> 
    <action android:name="android.intent.action.SCREEN_ON"></action> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 

       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 

     <service 
      android:name=".MyService" 
      android:enabled="true" 
      android:exported="true" > 
     </service> 
    </application> 

</manifest> 
+0

umm. Это то, что я сделал. как этот ответ отличается от того, что сделал? – AxeManTOBO

+0

Вы не указали в 'filter' в своем сервисе onCreate. – motis10

+0

, но мне не нужен фильтр. – AxeManTOBO

Смежные вопросы