編輯:關於Android編程
再重復一遍我遇到的問題,就是在MainActivity裡面打開AnotherActivity去執行一些操作,相應的改變MainActivity裡的一些布局或者執行一些動作,最開始想到的就是把MainActivity的Handler直接傳給AnotherActivity,好像不可行,就有了這篇和上一篇文章。
上一篇方案一是通過重寫application來在兩個activity之間共享Handler的,今天這個方案是通過廣播機制解決本來想要通過傳遞handler來實現的功能,算是Activity之間傳遞Handler問題的變通方案,
其實很簡單,就是Broadcast的應用,替換了原來想要通過共享handler解決的思路。
代碼如下:
MainActivity:
package jason.broadcastinsteadofhanlderdemo;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView textView;
Button sButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.show);
sButton = (Button) findViewById(R.id.startAnother);
sButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(MainActivity.this,AnotherActivity.class));
}
});
IntentFilter filter = new IntentFilter(AnotherActivity.action);
registerReceiver(broadcastReceiver, filter);
}
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
textView.setText(intent.getExtras().getString(data));
}
};
protected void onDestroy() {
unregisterReceiver(broadcastReceiver);
};
}
AnotherActivity:
package jason.broadcastinsteadofhanlderdemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class AnotherActivity extends Activity {
public static final String action = jason.broadcast.action;
Button update;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.another);
update = (Button) findViewById(R.id.updateMain);
update.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(action);
intent.putExtra(data, yes i am data);
sendBroadcast(intent);
finish();
}
});
}
}
代碼地址:http://download.csdn.net/detail/jason0539/6832899
作者:jason0539
微博:http://weibo.com/2553717707
博客:http://blog.csdn.net/jason0539(轉載請說明出處)
Android MVVM
1、Android DataBinding:再見MVP,你好MVVM當我們談到android應用程序的架構模式時,MVP一直是占主流的地位。就像 Ted Mosby, N
Android 操作系統的內存回收機制
Android APP 的運行環境Android 是一款基於 Linux 內核,面向移動終端的操作系統。為適應其作為移動平台操作系統的特殊需要,谷歌對其做了特
Android總結之WebView與Javascript交互(互相調用)
前言:最近公司的App為了加快開發效率選擇了一部分功能采用H5開發,從目前市面的大部分App來講,大致分成Native App、Web App、Hybrid App三種方
Android基礎之Intent 和 Intent 過濾器
Intent是一個消息傳遞對象,您可以使用它從其他應用組件請求操作。盡管 Intent 可以通過多種方式促進組件之間的通信,但其基本用例主要包括以下三個:1.啟動 Act