Android 同步期间始终调用SyncService onCreate
我刚开始开发一款Android应用程序,在同步过程中出现了一些大的性能问题。有一些低挂果实,比如重复执行Android 同步期间始终调用SyncService onCreate,android,performance,android-syncadapter,Android,Performance,Android Syncadapter,我刚开始开发一款Android应用程序,在同步过程中出现了一些大的性能问题。有一些低挂果实,比如重复执行insert而不是bulkInsert等等,但我也注意到日志中的以下内容: 11-25 11:46:02.630 10160-10160/my.package.name:sync D/mlt_SyncService: onCreate() 11-25 11:46:02.630 10160-10160/my.package.name:sync D/mlt_SyncService: Bound 1
insert
而不是bulkInsert
等等,但我也注意到日志中的以下内容:
11-25 11:46:02.630 10160-10160/my.package.name:sync D/mlt_SyncService: onCreate()
11-25 11:46:02.630 10160-10160/my.package.name:sync D/mlt_SyncService: Bound
11-25 11:46:02.660 10160-10160/my.package.name:sync D/mlt_SyncService: onCreate()
11-25 11:46:02.660 10160-10160/my.package.name:sync D/mlt_SyncService: Bound
11-25 11:46:02.700 10160-10160/my.package.name:sync D/mlt_SyncService: onCreate()
11-25 11:46:02.700 10160-10160/my.package.name:sync D/mlt_SyncService: Bound
11-25 11:46:02.720 10160-10160/my.package.name:sync D/mlt_SyncService: onCreate()
11-25 11:46:02.720 10160-10160/my.package.name:sync D/mlt_SyncService: Bound
11-25 11:46:02.750 10160-10160/my.package.name:sync D/mlt_SyncService: onCreate()
11-25 11:46:02.750 10160-10160/my.package.name:sync D/mlt_SyncService: Bound
11-25 11:46:02.780 10160-10160/my.package.name:sync D/mlt_SyncService: onCreate()
11-25 11:46:02.780 10160-10160/my.package.name:sync D/mlt_SyncService: Bound
……等等。。。
这就是所讨论的服务:
public class SyncService extends Service {
private static final String DEBUG_TAG = "mlt_SyncService";
private static SyncAdapter sSyncAdapter = null;
// Object to use as a thread-safe lock
private static final Object sSyncAdapterLock = new Object();
@Override
public void onCreate() {
synchronized (sSyncAdapterLock) {
if (sSyncAdapter == null) {
sSyncAdapter = new SyncAdapter(getApplicationContext(), true);
}
Log.d(DEBUG_TAG,"onCreate()");
}
}
@Override
public IBinder onBind(Intent intent) {
Log.d(DEBUG_TAG,"Bound");
return sSyncAdapter.getSyncAdapterBinder();
}
}
那里没什么特别的事。然而,新的SyncService似乎一直在实例化。我只能在清单中找到服务使用情况:
<service
android:name="my.package.name.sync.SyncService"
android:exported="true"
android:process=":sync">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
</service>
再说一次,没什么特别的
似乎在保存的每个实体上都实例化了SyncService
,但是查看该代码并没有发现任何可疑之处,除了我们正在逐个insert
而不是bulkInsert
这一事实之外,但这是另一回事。此外,即使我输入断点并停止执行insert
时,onCreate()
日志流仍在继续
我想可能有一些内容观察家会在更改时触发新的同步,但这些都没有。只有一个requestSync
调用;在onClick
侦听器中
那么,为什么我的SyncService在同步过程中总是被实例化和绑定
谢谢你的建议