マイアプリを続行することができません。WakefulBroadcastReceiver startWakefulServiceはwakefulbroadcastreceiver</p> <p>マニフェストからintentservice要求を呼び出しません
私はメインクラスmsgReqAction(でメソッドを呼び出すことができますので、私は、メインクラス内のサブクラスとしてこれらを持っている私のメインの活動の内部)
public class WearableReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, WearableReceiverService.class);
startWakefulService(context, service);
}
}
public class WearableReceiverService extends IntentService {
public WearableReceiverService(){
super("WearableReceiverService");
}
@Override
protected void onHandleIntent(Intent intent) {
msgReqAction(intent.getIntExtra(MyConstants.BROADCAST_DATA_REQ, 0));
WearableReceiver.completeWakefulIntent(intent);
}
}
私は、サブクラスが妨げなければならないとして、これらを持つとは思いません状況が、それは可能性があります。私が手術のためにメインクラスの外にこれらを持っていなければならないと私に知らせてください。
最終的に私は私のプロジェクトがcom.example.johnbravado.zionworkある
ウェアラブル
@Override
public void onMessageReceived(final MessageEvent messageEvent) {
nodeId = messageEvent.getSourceNodeId();
String incomingPath = messageEvent.getPath();
int incomingReq = Integer.parseInt(new String(messageEvent.getData()));
if(incomingPath.equalsIgnoreCase(MyConstants.MSG_COUNTER_REQ_PATH)) {
Intent broadcastIntent = new Intent();
broadcastIntent.setAction(MyConstants.BROADCAST_ACTION_RESP);
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
broadcastIntent.putExtra(MyConstants.BROADCAST_DATA_REQ, incomingReq);
sendBroadcast(broadcastIntent);
}else if(incomingPath.equalsIgnoreCase(MyConstants.MSG_DEFAULT_PATH)){
}
}
public static final String BROADCAST_ACTION_RESP = "com.example.johnbravado.zionwork.MESSAGE_PROCESSED";
からのメッセージをリッスンする主な活動外のリスナーからの全体のプロセスを開始 - また、サイドノートではあり変更してリファクタリングする方法をアンドロイドスタジオで簡単にできるように私は例を取り除くか、または完全に変更することができますか?
私は、システムが
startWakefulService(context, service);
へのすべての方法は、それが意図サービスを入力せずにクラッシュを取得デバッガを実行します。私はそれがサービスに入って仕事をするのを妨げているすべての中で、簡単に私が行方不明になっているsomethigです。私はそれがサービスに全く入っていないことが分かります。私は、サービス
@Override
protected void onHandleIntent(Intent intent) {
int data;
data = 0;
data++;
msgReqAction(intent.getIntExtra(MyConstants.BROADCAST_DATA_REQ, 0));
WearableReceiver.completeWakefulIntent(intent);
}
のいくつかのイントロラインを追加し、これらのラインにデバッグポイントを実行しようと、それはそこに着くdidntの。
私はその外部サービスからmsgReqAction()を呼び出すことができます。デバイスがスリープモードになったときの主なアクティビティを処理するためのサービスポイント。または、実際の方法は、サービスが参照できる静的変数をいくつか作成し、onResume()が呼び出されたときの主なアクティビティで、眠っている間に何が起こったかで必要なものを実行することです。 –
あなたは不正行為をして、 'Activity'が自分自身への参照を' static'変数に格納して、 'Service'がそのメソッドを呼び出せるようにすることができます。しかし、これは悪い習慣です。通常、 'Service'は、' Intent'( 'Activity'がリッスンしている)を送信するか、' Activity'を 'Service'にバインドし、' Service'からのコールバックを ' AIDLを使用するか、EventBus(パブリッシュ/サブスクライブフレームワーク)のようなものを使用して、「アクティビティ」 –
私はそれが私の放送受信機がやっていることだと思った。 wakefulbroadcastを通常のブロードキャストと交換し、セカンダリサービスの使用を取り除き、ブロードキャストレシーバーでmsgReqaction()を処理するだけで動作するでしょう。または、放送受信機をメインのアクティビティと一緒に使用するにはどうすればいいですか? –