第一种:
通过公用的Handler 更新Activity
MyApplication 方法
public class MyAppliacation extends Application { private static MyAppliacation myAppliacation; public Handler handler =null; public Handler getHandler() { return handler; } public void setHandler(Handler handler) { this.handler = handler; } public static MyAppliacation getInstance(){ if (myAppliacation==null){ synchronized (MyAppliacation.class){ if (myAppliacation==null){ myAppliacation = new MyAppliacation(); } } } return myAppliacation; } @Override public void onCreate() { super.onCreate(); } }
MainActivity
public class MainActivity extends Activity { private Button MainButton; private TextView MainText; private Handler handler = new Handler(){ @Override public void dispatchMessage(Message msg) { Log.v("abc--","Handler更新MainActivity界面"); MainText.setText("通过handler更新数据"); } } ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MainButton =findViewById(R.id.MainButton); MainText =findViewById(R.id.MainText); MainButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { MyAppliacation.getInstance().setHandler(handler); Intent intent = new Intent(MainActivity.this,A.class); startActivity(intent); } }); } }A
public class A extends Activity { private Button AButton; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a); AButton = findViewById(R.id.AButton); AButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { MyAppliacation.getInstance().getHandler().sendEmptyMessage(1); A.this.finish(); } }); } }
运行结果:
07-19 13:17:12.617 2462-2462/com.example.activityhandler V/abc--: Handler更新MainActivity界面
第二种方法 通过广播的形式 BroadCastReceiver
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { MainText.setText(intent.getExtras().getString("data")); } };
MainButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // MyAppliacation.getInstance().setHandler(handler); Intent intent = new Intent(MainActivity.this,A.class); startActivity(intent); } });A.class
public static final String action ="jason.broadcast.action";
Intent intent = new Intent(action); intent.putExtra("data", "BroadCast通知更新数据"); sendBroadcast(intent); finish();