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

问题描述 投票:0回答:1

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

碎裂指令代码:

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);

BroadcastReceiever类别--ClassNotificationActivity.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);
    }
      }

Manifest.xml

  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.SET_ALARM" />

  <receiver  android:name=".view.ui.NotificationActivity" />

Samplelayout.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>
android broadcastreceiver android-handler
1个回答
0
投票
onResume()中注册您的BroadcastReceiver。

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

onPause()中,确保取消注册接收者

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

务必注意我用于IntenFilter的值。这将是其他类将如何指定它们将发送到哪些广播接收器的方法。

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

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

然后发送广播

sendBroadcast(timerIntent)

© www.soinside.com 2019 - 2024. All rights reserved.