今天学下广播的使用
写一个登陆界面
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.zvt_110.broadcastbestpractice.LoginActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp" android:orientation="horizontal" android:padding="20dp"> <TextView android:layout_width="90dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="Account:" android:textSize="18sp" /> <EditText android:id="@+id/account" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp" android:orientation="horizontal" android:padding="20dp"> <TextView android:layout_width="90dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="Password:" android:textSize="18sp" /> <EditText android:id="@+id/password" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:inputType="textPassword" /> </LinearLayout> <Button android:id="@+id/login" android:layout_width="match_parent" android:layout_height="60dp" android:paddingLeft="30dp" android:paddingRight="30dp" android:text="Login" /> </LinearLayout>
当登陆界面跳转到主界面时,写一个intent触发broadcast
btn_force_offline = findViewById(R.id.force_offline); btn_force_offline.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent("mybroadcast"); sendBroadcast(intent); } });
注意那个intent写的,我把他当作一个标识符
然后写一个baseactivity 让所有类都继承自这个类
public class BaseActivity extends AppCompatActivity { private ForceOffLineReceiver receiver; @Override public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); ActivityCollector.addActivity(this); } @Override protected void onResume() { super.onResume(); IntentFilter intentFilter=new IntentFilter(); intentFilter.addAction("mybroadcast"); receiver=new ForceOffLineReceiver(); registerReceiver(receiver,intentFilter); } @Override protected void onPause() { super.onPause(); if (receiver!=null){ unregisterReceiver(receiver); } receiver=null; } @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this); } class ForceOffLineReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("warning"); builder.setMessage("reboot rightnow"); builder.setCancelable(false); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { ActivityCollector.finalAll(); Intent intent = new Intent(context, LoginActivity.class); startActivity(intent); } }); builder.show(); } } }