Android-broadcast靜態動態廣播

來源:互聯網
上載者:User

標籤:stat   cli   sage   button   接收器   關閉   int   mission   man   

廣播的靜態和動態類型

靜態廣播:

1.繼承之broadcastreceiver

public class MyStaticBroadcastReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        //RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);        Toast.makeText(context,"zcxczcxstatic",Toast.LENGTH_SHORT).show();        Log.d("zcx","staticbroad");        //remoteViews.setTextViewText(R.id.widget_text, intent.getStringExtra("MESSAGE"));        //context.startActivity(intent);        AlertDialog.Builder builder = new AlertDialog.Builder(context);        builder.setTitle("提示")                .setMessage("收到BroadcastSend應用程式的廣播")                .setPositiveButton("確定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                    }                })                .setNegativeButton("取消", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                    }                });        AlertDialog dialog = (AlertDialog) builder.create();        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);        dialog.show();                //AppWidgetManager.getInstance(context).updateAppWidget(new ComponentName(         //       context.getApplicationContext(), MyWidgetProvider.class), remoteViews);    }

 

2.在AndroidManifest中定義

<receiver android:priority="1000"  android:name=".MyStaticBroadcastReceiver"            android:permission="com.example.zcx.permission"            android:process=":remote"            >            <intent-filter>                <action android:name="android.zcx"></action>            </intent-filter></receiver>>

3.client 調用

Log.d("zcx","sendStaticBroadcastButton");                //Toast.makeText(getApplicationContext(),"zcxczcx",Toast.LENGTH_SHORT).show();                Intent intent = new Intent();                intent.setAction("android.zcx");                //intent.setAction("android.appwidget.action.zcx");                intent.addFlags(FLAG_INCLUDE_STOPPED_PACKAGES);                //intent.putExtra("MESSAGE", editText.getText().toString());                sendBroadcast(intent);

 

 

動態廣播:

1.繼承之broadcastreceiver

@Override    public void onReceive(Context context, Intent intent) {        //RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);        Log.d("zcx","MyDynamicBroadcastReceiver");        //remoteViews.setTextViewText(R.id.widget_text, intent.getStringExtra("MESSAGE"));        Toast.makeText(context,"zcxczcxDYnamic",Toast.LENGTH_SHORT).show();        //AppWidgetManager.getInstance(context).updateAppWidget(new ComponentName(         //       context.getApplicationContext(), MyWidgetProvider.class), remoteViews);        AlertDialog.Builder builder = new AlertDialog.Builder(context);        builder.setTitle("提示")                .setMessage("收到BroadcastSend dYNAMIC應用程式的廣播")                .setPositiveButton("確定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                    }                })                .setNegativeButton("取消", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                    }                });        AlertDialog dialog = (AlertDialog) builder.create();        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);        dialog.show();    }

2.服務端代碼註冊啟動

IntentFilter dynamic_filter = new IntentFilter();        dynamic_filter.addAction("android.appwidget.action.zcx");        myDynamicBroadcastReceiver = new MyDynamicBroadcastReceiver();        registerReceiver(myDynamicBroadcastReceiver,dynamic_filter);

3.用戶端調用

public void onClick(View v) {                Intent intent = new Intent();                //intent.setAction("android.zcx");                intent.setAction("android.appwidget.action.zcx");                //intent.addFlags(FLAG_INCLUDE_STOPPED_PACKAGES);                //intent.putExtra("MESSAGE", editText.getText().toString());                sendBroadcast(intent);}

 

 動態廣播和靜態廣播的區別:

(1)動態註冊廣播不是常駐型廣播,也就是說廣播跟隨Activity的生命週期。注意在Activity結束前,移除廣播接收器。

靜態註冊是常駐型,也就是說當應用程式關閉後,如果有資訊廣播來,程式也會被系統調用自動運行。

 

這裡採用動態和靜態實現方式,服務和用戶端,服務要開啟,客戶才可以調用服務的廣播接收,動態可以理解,靜態為什嗎?

 

Android-broadcast靜態動態廣播

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.