通过“Android中的服务”下载图像

时间:2016-08-20 09:42:25

标签: android service imageview android-volley

我是Android编程和Android应用程序的新手。

我有2支球队--A和B。

团队A 我有一个活动A ,其中我有3个ImageView来从服务器放置图像。每当团队B 的任何用户将图像上传到服务器时,我都希望从服务器下载图像并将其放在活动A 中的ImageView上,并显示的通知新图片在这里

目前,我能够从服务器下载图像并能够手动将它们放在ImageView上,但我想要一个服务,这将为此不断运行。

我google了很多,但找不到这个过程的任何好例子。请帮帮我。

我想使用服务

**我正在使用Volley进行网络连接

感谢。

4 个答案:

答案 0 :(得分:0)

当您获得推送通知以更新活动时,只需使用LocalBroadcastManager即可。仍然需要服务,请尝试使用以下链接。

https://gist.github.com/Antarix/8131277

答案 1 :(得分:0)

嘿使用firebase进行通知以获取图像更新。获得通知后,触发广播并将数据发送到您的活动以更改UI。 在您的情况下,不应使用服务,因为您通过通知从服务获取数据。 请让我知道我可以进一步帮助你。 好你正在使用Volley进行网络操作。 使用Picasso进行图像加载

  

编译'com.squareup.picasso:picasso:2.5.0'

答案 2 :(得分:0)

简单创建一个类,并通过

进行扩展
Service

并onStartCommmand写下凌空代码以下载图像并在volley的

onResponse

方法发送

local broadcast 

通过此广播更新UI

答案 3 :(得分:0)

public class LocalBroadcastExampleActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.log_list);

        Button buttonStartService = (Button)findViewById(R.id.button_ok);
        buttonStartService.setOnClickListener(new View.OnClickListener(){
                 @Override
                 public void onClick(View v) {
                // TODO Auto-generated method stub
                //Register MessageService in Manifest to work
               startService(newIntent(LocalBroadcastExampleActivity.this, MessageService.class));
            }
        });

    }

    @Override
    protected void onPause() {
        // Unregister since the activity is paused.
        LocalBroadcastManager.getInstance(this).unregisterReceiver(
            mMessageReceiver);
        super.onPause();
    }

    @Override
    protected void onResume() {
        // Register to receive messages.
        // We are registering an observer (mMessageReceiver) to receive Intents
        // with actions named "custom-event-name".
        LocalBroadcastManager.getInstance(this).registerReceiver(
            mMessageReceiver, new IntentFilter("custom-event-name"));
        super.onResume();
    }

    // Our handler for received Intents. This will be called whenever an Intent
    // with an action named "custom-event-name" is broadcasted.
    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver(){
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            // Get extra data included in the Intent
            String message = intent.getStringExtra("message");
            Log.d("receiver", "Got message: " + message);
        }
    };
}

现在服务类

public class MessageService extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
        sendMessage();
        return super.onStartCommand(intent, flags, startId);
    }

    // Send an Intent with an action named "custom-event-name". The Intent
    // sent should
    // be received by the ReceiverActivity.
    private void sendMessage() {
        Log.d("sender", "Broadcasting message");
        Intent intent = new Intent("custom-event-name");
        // You can also include some extra data.
        intent.putExtra("message", "This is my message!");
        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
    }

}
相关问题