私は短剣を使い始めたばかりで、シングルトン オブジェクトに関するいくつかの問題に遭遇しました。
したがって、シングルトンは次のようになります。
@Module(
injects = {MainActivity.class,SecondActivity.class}
)
public class MySingle {
//just to count the number of instances of the class
public static int thecount=0;
//the constructor
public MySingle(){
Log.v("testing","created");
thecount++;
}
@Singleton
@Provides
public MySingle getSingle(){
return new MySingle();
}
}
オブジェクト グラフが作成されるアプリケーション クラス:-
public class MyApplication extends Application {
private ObjectGraph objectGraph;
@Override
public void onCreate(){
super.onCreate();
objectGraph=ObjectGraph.create(new MySingle());
}
public ObjectGraph getObjectGraph(){
return objectGraph;
}
}
MainActivity.class:-
public class MainActivity extends ActionBarActivity {
@Inject MySingle mysingle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// MyApplication app=(MyApplication)getApplication();
// app.getObjectGraph().inject(this);
Log.v("testing", mysingle.thecount + " mainact");
}
}
したがって、これを実行するたびに、シングルトン「MySingle」のインスタンス数は 1 になります。これは問題ありません。ただし、これらの行のコメントを外すと:-
MyApplication app=(MyApplication)getApplication();
app.getObjectGraph().inject(this);
インスタンスの数を 2 として取得します。ここから、Dagger がオブジェクト グラフごとにシングルトンを作成することがわかりますが、上記の 2 行を使用して理解したところから、既存のオブジェクト グラフに MainActivity.class を挿入しています。今のところ、私には明らかではありません..私はそれを試しているだけです.