Android中sendSticyBroadcast()的缺点是什么?

时间:2015-04-29 05:57:00

标签: broadcastreceiver sticky

我正在开发一个API级别21的Android应用程序,我正在播放一条消息,但发生了一些不寻常的事情。像其他应用程序可以使用它。

任何人都可以帮助我解决如何在API 21中发送粘性广播。

    //MyActivity.java
    class myActivity extends Activity {

    //MyDialog dialog initialized in onCreate

    ...

    private class MyReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            //toast "Broadcast received"
        }
    }
}

//MyDialog.java
class MyDialog extends Dialog {

    //m_context = incoming context from MyActivity

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        Button button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnCLickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                m_context.sendStickyBroadcast(intent);
            }

       });

    }

}


//AndroidManifest.xml
<activity android:name=".MyActivity" />
<receiver android:name="MyReceiver" android:enabled="true">
    <intent-filter >
        <action android:name="android.intent.action.RUN"/>
    </intent-filter>
</receiver>

1 个答案:

答案 0 :(得分:0)

是的,我在谷歌搜索后很快回答。

此方法在API级别21中已弃用。不应使用粘性广播。它们不提供安全性(任何人都可以访问它们),没有保护(任何人都可以修改它们)以及许多其他问题。建议的模式是使用非粘性广播来报告某些内容已发生变化,并使用其他机制让应用程序在需要时检索当前值。