如何使用处理程序将消息从一个线程发送到 Fargment 线程



我想使用处理程序将一些消息从一个线程发送到另一个线程。但实际上不知道要实现它。在下面的代码中,我想将消息从广播接收器类发送到片段。但我不知道如何实现这一点。

配方代码:

Calendar calendar= Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY,16);
calendar.set(Calendar.MINUTE,42);
calendar.set(Calendar.SECOND,0);
Intent intent =new Intent(getContext(),NotificationActivity.class);
intent.putExtra("id",R.id.notification_imageView);
PendingIntent pendingIntent =  
PendingIntent.getBroadcast(getContext(),100,intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager=(AlarmManager) getActivity().getSystemService(ALARM_SERVICE);
System.out.println("DEBUG==> Instantiating Alarm Manager Service");
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),1000 * 60 * 
02,pendingIntent);

广播接收类 --类通知活动.class

public class NotificationActivity extends BroadcastReceiver {
private View view;
@Override
public void onReceive(Context context, Intent intent) {
ImageView img;
System.out.println("DEBUG==> Page Notification Activity is being loaded");
View view = View.inflate(context, R.layout.Samplelayout, null);
img = view.findViewById(R.id.imageview);
System.out.println("DEBUG==> Loading bulb Image for Animation"+img);
System.out.println("DEBUG==> Loading bulb Image for Animation");
Animation animation = new AlphaAnimation((float) 0.5, 0); // Change alpha from fully visible to 
invisible
animation.setDuration(500); // duration - half a second--2 minutes
animation.setRepeatCount(200);
img.startAnimation(animation);
}
}

清单.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SET_ALARM" />
<receiver  android:name=".view.ui.NotificationActivity" />

示例布局.xml:

<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/red"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:id="@+id/imageview"
android:layout_width="70dp"
android:layout_height="64dp"
android:layout_margin="20dp"
android:src="@drawable/Dumble"
android:tint="@android:color/white"
tools:layout_editor_absoluteX="32dp"
tools:layout_editor_absoluteY="32dp" />

</LinearLayout>

onResume()注册您的广播接收器。

override fun onResume() {
super.onResume()
registerReceiver(this, IntentFilter("com.my.app.test_br"))
}

onPause()请确保取消注册接收器

override fun onPause() {
super.onPause()
unregisterReceiver(this)
}

重要的是要注意我用于IntenFilter的值。这将是其他类指定它们要发送到哪些广播接收器的方式。

从发送广播的类中,初始化广播意图(请注意,用于 Intent 参数的值与注册广播接收器时使用的值相同(

private val timerIntent = Intent(com.my.app.test_br)

然后发送广播

sendBroadcast(timerIntent)

最新更新