IntentServiceに何が間違っている可能性があります
-
13-12-2019 - |
質問
私は数回のインテントサービスを数回使用しましたが、現在のアプリでは、SoraStreCeiverのOnReceive()が起動することはできません。IntentServiceのインテントのアクションと、BroadcastReceiverとともにOnResumeに登録されているIntentFilterの正確な文字列があります。
filter = new IntentFilter("com.currencyconverter2.intent.action.MESSAGE");
Log.d("CC2", "intent filter created");
filter.addCategory(Intent.CATEGORY_DEFAULT);
Log.d("CC2", "filter category added");
receiver = new MessageReceiver();
Log.d("CC2", "receiver instantiated");
}
public void onResume(){
super.onResume();
registerReceiver(receiver, filter);
Log.d("CC2", "receiver registered");
}
public void onPause(){
super.onPause();
unregisterReceiver(receiver);
Log.d("CC2", "receiver unregistered");
}
public class MessageReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent){
Log.d(Tag, "entered onReceive...");
String html = intent.getStringExtra("OUTPUT");
webView.setBackgroundColor(Color.parseColor("#f4f36f"));
webView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);
}
}
.
MANIFEST.XMLでサービスを指定しました。
<service android:name=".IntentServiceTest"></service>
.
私のログは、IntentBroadcastがインテントサービスからブロードキャストされ、アプリがそこに停止したことを教えてくれます。BroadcastReceiverはそれを受け取ったようでした。何が間違っていることができますか?ありがとう!
編集:
私のintentservice
Intent broadcastIntent = new Intent();
Log.d(Tag, "setting intent action");
broadcastIntent.setAction("com.currencyconverter2.intent.action.MESSAGE");
Log.d(Tag, "adding intent category");
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
Log.d(Tag, "putting intent extra");
broadcastIntent.putExtra("OUTPUT", data.text());
Log.d(Tag, "sending broadcast");
sendBroadcast(intent);
}catch(Exception e){
e.printStackTrace();
//System.out.println("f");
}
}
}
.
編集2:
バグを見つけました。
Intent broadcastIntent = new Intent();
Log.d(Tag, "setting intent action");
broadcastIntent.setAction("com.currencyconverter2.intent.action.MESSAGE");
Log.d(Tag, "adding intent category");
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
Log.d(Tag, "putting intent extra");
broadcastIntent.putExtra("OUTPUT", data.text());
Log.d(Tag, "sending broadcast");
sendBroadcast(intent);
.
SendBroadcast(ブロードキャスト)を持つべきです。代わりに
解決
あなたのandroidmanifest.xmlを確認してください:
<receiver android:name=".MessageReceiver">
<intent-filter>
<action android:name="com.currencyconverter2.intent.action.MESSAGE" />
<category android:name="android.intent.category.Default" />
</intent-filter>
</receiver>
.
^ - ^
他のヒント
intentService タスクを実行してシャットアウトするにはコードを積極的に見えるように思われる、 service 代わりに intentService
所属していません StackOverflow