私が知る限り、これはうまくいくはずです。そうでないことを除いて:-/
アイデアは、私が使用するすべてのアクティビティクラスを拡張して、送信時にトーストメッセージをポップアップするBroadcastReceiverを含めることです。この戦略の最終的なゲームは、非同期ワーカーのジョブが「最上位」の形式(利用可能な場合)である「自分で発見」し、選択しない場合に非同期イベントの一部であるにもかかわらず、トーストを介してメッセージを使用に投稿できることです。(*)コンテキストを引数として渡します。
問題:doDemo()を呼び出すと、発生イベントが発生
log.d
します(doDemo()から取得します)が、receiveイベントは発生しません。
(*)これは不可欠です、それは全体の目的です
public class ToastActivity extends Activity{
private BroadcastReceiver ToastBroadCastReceiver = new BroadcastReceiver() {
@Override
public void onReceive( Context context, Intent intent ) {
Toast.makeText(getApplicationContext(), intent.getAction() + " package: "+ intent.getPackage(), Toast.LENGTH_SHORT).show();
Log.d("ToastBroadCastReceiver", "Broadcastreceiver: " + intent.getAction() + " package: "+ intent.getPackage() + " @" + System.currentTimeMillis());
}
};
public void onResume() {
super.onResume();
registerReceiver(ToastBroadCastReceiver, new IntentFilter("com.my.domain.BROADCAST"));
}
public void onPause() {
super.onPause();
unregisterReceiver(ToastBroadCastReceiver);
}
public void doDemo(){
Log.d("ToastBroadCastReceiver", "doDemo Broadcast started" );
Intent broadCastIntent = new Intent();
broadCastIntent.setAction( "com.my.domain.BROADCAST");
broadCastIntent.setPackage( "well hello test!" );
sendBroadcast(broadCastIntent);
Log.d("ToastBroadCastReceiver", "doDemo Broadcast sent" );
}
}
編集
アリとの長い会話の後、これが私たちが思いついたものです
public class ToastActivity extends Activity{
private BroadcastReceiver ToastBroadCastReceiver = new BroadcastReceiver() {
@Override
public void onReceive( Context context, Intent intent ) {
if (intent.getAction().equals("TOASTMESSAGE")) {
String message = "";
Bundle extras = intent.getExtras();
if (extras != null) {
message = extras.getString("message");
}
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
Log.d("ToastBroadCastReceiver", "Broadcastreceiver: " + message + "|" + intent.getAction());
}
}
};
public void ToastRegister(){
registerReceiver(ToastBroadCastReceiver, new IntentFilter("TOASTMESSAGE"));
}
public void ToastDeRegister(){
try {
unregisterReceiver(ToastBroadCastReceiver);
}
catch (Exception e) {
Log.e("ToastBroadCastReceiver", e.getMessage());
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ToastRegister();
}
public void onResume() {
super.onResume();
ToastRegister();
}
public void onPause() {
super.onPause();
ToastDeRegister();
}
public void onDestroy() {
super.onDestroy();
ToastDeRegister();
}
public void doDemo(){
Log.d("ToastBroadCastReceiver", "doDemo Broadcast started" );
Intent broadCastIntent = new Intent();
broadCastIntent.setAction("TOASTMESSAGE");
broadCastIntent.putExtra("message","hello test message!");
sendBroadcast(broadCastIntent);
Log.d("ToastBroadCastReceiver", "doDemo Broadcast sent" );
}
}