0
私は、サービスによって呼び出される非アクティビティクラスのReadConfig関数を持っています。この関数は、IntentServiceを使用してファイルからデータを読み取ります。ブロードキャスト受信者からデータを取得する単一の機能
機能
Intent configData = new Intent(actionID);
configData.putStringArrayListExtra("CONFIGDATA",FileOperations.readFile(fileName));
LocalBroadcastManager.getInstance(this).sendBroadcast(configData);
意向サービス
//Start of globalVariables
public static boolean received;
public static String actionID = "ACTION_ID";
public static ArrayList<String> configData;
public static BroadcastReceiver configDataReceiver;
//End of globalVariables
public static List<String> ReadConfig(Context context, String configFileName)
{
configDataReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context arg0, Intent intent)
{
if(intent.getAction().equals(actionID))
{
configData = intent.getStringArrayListExtra("CONFIGDATA");
received = true;
}
}
};
LocalBroadcastManager.getInstance(context)
.registerReceiver(configDataReceiver,new IntentFilter(actionID));
Intent workRequest = new Intent(context,IOConfigurations.class);
workRequest.putExtra("OPERATION","READ");
workRequest.putExtra("FILENAME",configFileName);
//Calling intentservice
context.startService(workRequest);
//Wait for broadcast receiver to get data and assign to global variables
while (!received)
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
LocalBroadcastManager.getInstance(context).unregisterReceiver(configDataReceiver);
return configData;
}
非アクティビティ・クラスに意図サービスが呼び出されると、データを放送するが、受信機は、しかしから任意のデータを受信しないばかりれますブロードキャストマネージャーとwhileループは永遠に続く。
をご確認ください。 – Balakrishnan
ACTION_IDの値が次のように変更されました=> com.example.data_fetch_action – Sush
あなたは正しいですが、私はintent.getAction()メソッドを使用しました。これは、 "ACTION_ID"ではなくnullを返すIntenetサービスでした。アクティビティから呼び出されたときにも同じことが機能していない場合、アクティビティは永遠にフリーズします。 – Balakrishnan