转载

由android保存一张图片引发的联想

最近在做app的时候需要保存一张图片到sd卡,代码保存以后能在手机相册里看到,但是我保存以后在相册里不显示,但是在文件管家里可以看到这张图片,我试了试糗百的app,保存了一张图片,能在相册里看到,一开始我以为是图片命名问题,按照糗百的命名方式命名还是不行。

后来在保存图片后加了以下代码就可以了

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri                             .parse("file://" + _file)));

那么这个sendBroadcast到底是做什么的呢?广播,相当于iOS中NSNotificationCenter的postNotificationName。不过比iOS更加强大,iOS中只是app内适用,在android中发送一条广播其他app都可以收到,然后进行相应的处理。

发送广播比较

android

Intent it = new Intent("someNotification"); it.putExtra("some argv", "abcd"); sendBroadcast(it);

iOS

[[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidCompleteNotification object:task userInfo:userInfo];

接收广播比较

android

private BroadcastReceiver br = new BroadcastReceiver() {    @Override   public void onReceive(Context context, Intent intent) {    String someargv = intent.getStringExtra("some argv");   }  }; IntentFilter ifilter = new IntentFilter("someNotification"); registerReceiver(br, ifilter);

iOS

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingTaskDidCompleteNotification object:nil]; - (void)networkRequestDidFinish:(NSNotification *)notification {  NSDictionary * userDic = [notification userInfo];     //some code }

取消接收广播比较

android

registerReceiver(br, ifilter);

iOS

[[NSNotificationCenter defaultCenter] removeObserver:self];

总结

个人还是喜欢iOS的单例模式,简洁 附app效果图 由android保存一张图片引发的联想 下载二维码一张 由android保存一张图片引发的联想

原文  http://quange.github.io/android-sava-image/
正文到此结束
Loading...