Scope rootScope = Magnet.createRootScope();
Scope playerScope = rootScope.createSubscope();
playerScope.bind(Uri.class, Uri.parse("https://my-media-file"));
// mark 1
MediaPlayer player = playerScope.getSingle(MediaPlayer.class);
player.playWhenReady();
// mark 2
Thread.sleep(5000)
playerScope.dispose()
// mark 3
// MediaPlayer.java
public interface MediaPlayer {
void playWhenReady();
}
// DefaultMediaPlayer.java
@Instance(type = MediaPlayer.class, disposer = "dispose")
public class DefaultMediaPlayer implements MediaPlayer{
private Uri assetId;
private MediaLoader mediaLoader;
public DefaultMediaPlayer(Uri assetId, MediaLoader mediaLoader) {
this.assetId = assetId;
this.mediaLoader = mediaLoader;
}
@Override
public void playWhenReady() {
System.out.println("play when ready " + assetId.toString());
}
public void dispose() {
System.out.println("play dispose");
}
}
// MediaLoader.java
public interface MediaLoader {
String load(Uri mediaUri);
}
// DefaultMediaLoader.java
@Instance(type = MediaLoader.class)
public class DefaultMediaLoader implements MediaLoader {
@Override
public Uri load(Uri mediaUri) {
return mediaUri;
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
移植版本:
Branches/master Release 3.4
版本迭代
v1.0.0 基于原项目最新版本,初次提交。
License
Copyright 2018-2020 Sergej Shafarenka, www.halfbit.de
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.