我正在开发一个包含/proc/net/arp
,public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.textView);
// Get an array list of mac to IP address mapping
ArrayList<String> arpTableLines = getArpTableLines();
// Generate a string to display in the text view based on the mapping
String textViewText = getTextViewText(arpTableLines);
// Set the text view value
tv.setText(textViewText);
}
public ArrayList<String> getArpTableLines(){
ArrayList<String> lines = new ArrayList<>();
try{
String line = "";
BufferedReader localBufferdReader =
new BufferedReader(new FileReader(new File("/proc/net/arp")));
while ((line = localBufferdReader.readLine()) != null) {
String[] ipmac = line.split("[ ]+");
if (!ipmac[0].matches("IP")) {
String ip = ipmac[0];
String mac = ipmac[3];
lines.add(ip + " <~> " + mac);
}
}
}catch (FileNotFoundException ex){
Log.v("TAG",Log.getStackTraceString(ex));
} catch (IOException ex){
Log.v("TAG",Log.getStackTraceString(ex));
}
return lines;
}
public String getTextViewText(ArrayList<String> lines){
String result = "";
for(String line : lines) result += line + "\n";
return result;
}
}
和Activities
的相对复杂的框架。
我需要访问一个实例Foo,但该实例需要在定义的范围内相同。 - &GT;例如,我有课程Services
,ContentProviders
,A
,B
。
C
会产生D
,A
,B
,C
,A
会使用同一个{{1}的实例}
B
会产生另一个C
,Foo
,D
,B
,C
也将使用{{1}的另一个实例}}
如何构建我的组件和模块,以便每个Context只有一个Foo实例,但多个上下文不会共享Foo实例?
现在我只创建了一个包含多个模块的组件,每个类都会调用
D
我无法解决这个问题。
提前致谢!
答案 0 :(得分:1)
您可以依赖Dagger-2
中的范围。
制作一个范围你只需创建一个这样的界面:
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface ContextScope { // You can call it whatever you want
}
然后在您的组件中添加@ContextScope
注释。
注意:您必须在完成后清除实例匕首不会为您清除它。服务或活动完成后,释放实例。
看看这个project。它实现了UserScope示例。