Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev #83

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Dev #83

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import android.view.Window;
import android.view.WindowManager;

import com.ryg.dynamicload.internal.DLActivityPlugin;
import com.ryg.dynamicload.internal.DLIntent;
import com.ryg.dynamicload.internal.DLPluginManager;
import com.ryg.dynamicload.internal.DLPluginPackage;
Expand All @@ -49,7 +50,7 @@
* @see {@link DLBasePluginActivity.that}
* @author renyugang
*/
public class DLBasePluginActivity extends Activity implements DLPlugin {
public class DLBasePluginActivity extends Activity implements DLActivityPlugin {

private static final String TAG = "DLBasePluginActivity";

Expand Down Expand Up @@ -89,7 +90,8 @@ public void onCreate(Bundle savedInstanceState) {

mPluginManager = DLPluginManager.getInstance(that);
Log.d(TAG, "onCreate: from= "
+ (mFrom == DLConstants.FROM_INTERNAL ? "DLConstants.FROM_INTERNAL" : "FROM_EXTERNAL"));
+ (mFrom == DLConstants.FROM_INTERNAL ? "DLConstants.FROM_INTERNAL"
: "FROM_EXTERNAL"));
}

@Override
Expand Down Expand Up @@ -385,7 +387,7 @@ public int startPluginActivityForResult(DLIntent dlIntent, int requestCode) {
}
return mPluginManager.startPluginActivityForResult(that, dlIntent, requestCode);
}

public int startPluginService(DLIntent dlIntent) {
if (mFrom == DLConstants.FROM_EXTERNAL) {
if (dlIntent.getPluginPackage() == null) {
Expand All @@ -394,7 +396,7 @@ public int startPluginService(DLIntent dlIntent) {
}
return mPluginManager.startPluginService(that, dlIntent);
}

public int bindPluginService(DLIntent dlIntent, ServiceConnection conn, int flags) {
if (mFrom == DLConstants.FROM_EXTERNAL) {
if (dlIntent.getPluginPackage() == null) {
Expand All @@ -403,41 +405,42 @@ public int bindPluginService(DLIntent dlIntent, ServiceConnection conn, int flag
}
return mPluginManager.bindPluginService(that, dlIntent, conn, flags);
}

public int unBindPluginService(DLIntent dlIntent, ServiceConnection conn) {
if (mFrom == DLConstants.FROM_EXTERNAL) {
if (dlIntent.getPluginPackage() == null)
dlIntent.setPluginPackage(mPluginPackage.packageName);
dlIntent.setPluginPackage(mPluginPackage.packageName);
}
return mPluginManager.unBindPluginService(that, dlIntent, conn);
}

// /**
// * 直接调用that.startService
// * that 可能有两种情况
// * 1.指向this
// * 2.指向DLProxyActivity
// */
// public ComponentName startService(Intent service) {
// return that.startService(service);
// }
//
// @Override
// public boolean stopService(Intent name) {
// // TODO Auto-generated method stub
// return super.stopService(name);
// }
//
// @Override
// public boolean bindService(Intent service, ServiceConnection conn, int flags) {
// // TODO Auto-generated method stub
// return super.bindService(service, conn, flags);
// }
//
// @Override
// public void unbindService(ServiceConnection conn) {
// // TODO Auto-generated method stub
// super.unbindService(conn);
// }
// /**
// * 直接调用that.startService
// * that 可能有两种情况
// * 1.指向this
// * 2.指向DLProxyActivity
// */
// public ComponentName startService(Intent service) {
// return that.startService(service);
// }
//
// @Override
// public boolean stopService(Intent name) {
// // TODO Auto-generated method stub
// return super.stopService(name);
// }
//
// @Override
// public boolean bindService(Intent service, ServiceConnection conn, int
// flags) {
// // TODO Auto-generated method stub
// return super.bindService(service, conn, flags);
// }
//
// @Override
// public void unbindService(ServiceConnection conn) {
// // TODO Auto-generated method stub
// super.unbindService(conn);
// }

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.ryg.dynamicload;

import android.app.Activity;
Expand All @@ -39,12 +40,13 @@
import android.view.Window;
import android.view.WindowManager;

import com.ryg.dynamicload.internal.DLActivityPlugin;
import com.ryg.dynamicload.internal.DLIntent;
import com.ryg.dynamicload.internal.DLPluginManager;
import com.ryg.dynamicload.internal.DLPluginPackage;
import com.ryg.utils.DLConstants;

public class DLBasePluginFragmentActivity extends FragmentActivity implements DLPlugin {
public class DLBasePluginFragmentActivity extends FragmentActivity implements DLActivityPlugin {

private static final String TAG = "DLBasePluginFragmentActivity";

Expand Down Expand Up @@ -83,7 +85,8 @@ public void onCreate(Bundle savedInstanceState) {

mPluginManager = DLPluginManager.getInstance(that);
Log.d(TAG, "onCreate: from= "
+ (mFrom == DLConstants.FROM_INTERNAL ? "DLConstants.FROM_INTERNAL" : "FROM_EXTERNAL"));
+ (mFrom == DLConstants.FROM_INTERNAL ? "DLConstants.FROM_INTERNAL"
: "FROM_EXTERNAL"));
}

@Override
Expand Down Expand Up @@ -357,17 +360,19 @@ public boolean onOptionsItemSelected(MenuItem item) {

/**
* @param dlIntent
* @return may be {@link #START_RESULT_SUCCESS}, {@link #START_RESULT_NO_PKG},
* {@link #START_RESULT_NO_CLASS}, {@link #START_RESULT_TYPE_ERROR}
* @return may be {@link #START_RESULT_SUCCESS},
* {@link #START_RESULT_NO_PKG}, {@link #START_RESULT_NO_CLASS},
* {@link #START_RESULT_TYPE_ERROR}
*/
public int startPluginActivity(DLIntent dlIntent) {
return startPluginActivityForResult(dlIntent, -1);
}

/**
* @param dlIntent
* @return may be {@link #START_RESULT_SUCCESS}, {@link #START_RESULT_NO_PKG},
* {@link #START_RESULT_NO_CLASS}, {@link #START_RESULT_TYPE_ERROR}
* @return may be {@link #START_RESULT_SUCCESS},
* {@link #START_RESULT_NO_PKG}, {@link #START_RESULT_NO_CLASS},
* {@link #START_RESULT_TYPE_ERROR}
*/
public int startPluginActivityForResult(DLIntent dlIntent, int requestCode) {
if (mFrom == DLConstants.FROM_EXTERNAL) {
Expand All @@ -377,7 +382,7 @@ public int startPluginActivityForResult(DLIntent dlIntent, int requestCode) {
}
return mPluginManager.startPluginActivityForResult(that, dlIntent, requestCode);
}

public int startPluginService(DLIntent dlIntent) {
if (mFrom == DLConstants.FROM_EXTERNAL) {
if (dlIntent.getPluginPackage() == null) {
Expand All @@ -386,7 +391,7 @@ public int startPluginService(DLIntent dlIntent) {
}
return mPluginManager.startPluginService(that, dlIntent);
}

public int bindPluginService(DLIntent dlIntent, ServiceConnection conn, int flags) {
if (mFrom == DLConstants.FROM_EXTERNAL) {
if (dlIntent.getPluginPackage() == null) {
Expand All @@ -395,11 +400,11 @@ public int bindPluginService(DLIntent dlIntent, ServiceConnection conn, int flag
}
return mPluginManager.bindPluginService(that, dlIntent, conn, flags);
}

public int unBindPluginService(DLIntent dlIntent, ServiceConnection conn) {
if (mFrom == DLConstants.FROM_EXTERNAL) {
if (dlIntent.getPluginPackage() == null)
dlIntent.setPluginPackage(mPluginPackage.packageName);
dlIntent.setPluginPackage(mPluginPackage.packageName);
}
return mPluginManager.unBindPluginService(that, dlIntent, conn);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,20 @@
import android.os.IBinder;

import com.ryg.dynamicload.internal.DLPluginPackage;
import com.ryg.dynamicload.internal.DLServicePlugin;
import com.ryg.utils.DLConstants;
import com.ryg.utils.LOG;

public class DLBasePluginService extends Service implements DLServicePlugin {

public static final String TAG = "DLBasePluginService";
private Service mProxyService;
private DLPluginPackage mPluginPackage;
protected DLPluginPackage mPluginPackage;
protected Service that = this;
protected int mFrom = DLConstants.FROM_INTERNAL;

@Override
public void attach(Service proxyService, DLPluginPackage pluginPackage) {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " attach");
mProxyService = proxyService;
mPluginPackage = pluginPackage;
Expand All @@ -51,65 +51,55 @@ protected boolean isInternalCall() {

@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onBind");
return null;
}

@Override
public void onCreate() {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onCreate");
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onStartCommand");
return 0;
}

@Override
public void onDestroy() {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onDestroy");
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onConfigurationChanged");
}

@Override
public void onLowMemory() {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onLowMemory");
}

@Override
public void onTrimMemory(int level) {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onTrimMemory");

}

@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onUnbind");
return false;
}

@Override
public void onRebind(Intent intent) {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onRebind");
}

@Override
public void onTaskRemoved(Intent rootIntent) {
// TODO Auto-generated method stub
LOG.d(TAG, TAG + " onTaskRemoved");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ryg.dynamicload;
package com.ryg.dynamicload.internal;

import android.app.Activity;
import android.content.Intent;
Expand All @@ -26,9 +26,7 @@
import android.view.MotionEvent;
import android.view.WindowManager.LayoutParams;

import com.ryg.dynamicload.internal.DLPluginPackage;

public interface DLPlugin {
public interface DLActivityPlugin extends DLAttachable<Activity>{

public void onCreate(Bundle savedInstanceState);
public void onStart();
Expand All @@ -38,7 +36,6 @@ public interface DLPlugin {
public void onPause();
public void onStop();
public void onDestroy();
public void attach(Activity proxyActivity, DLPluginPackage pluginPackage);
public void onSaveInstanceState(Bundle outState);
public void onNewIntent(Intent intent);
public void onRestoreInstanceState(Bundle savedInstanceState);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,21 @@

package com.ryg.dynamicload.internal;

import com.ryg.dynamicload.DLPlugin;

/**
* @author mrsimple
* 这是一个通用的attach接口,所有的组件都使用该接口即可
*/
public interface DLAttachable {
public interface DLAttachable<T> {
/**
* when the proxy impl ( {@see DLProxyImpl#launchTargetActivity()} ) launch
* the plugin activity , dl will call this method to attach the proxy activity
* and pluginManager to the plugin activity. the proxy activity will load
* the plugin's resource, so the proxy activity is a resource delegate for
* plugin activity.
* the plugin activity , dl will call this method to attach the proxy
* activity and pluginManager to the plugin activity. the proxy activity
* will load the plugin's resource, so the proxy activity is a resource
* delegate for plugin activity.
*
* @param proxyActivity a instance of DLPlugin, {@see DLBasePluginActivity}
* and {@see DLBasePluginFragmentActivity}
* @param proxyComponent a instance of DLPlugin, {@see DLBasePluginActivity}
* and {@see DLBasePluginFragmentActivity}, {@see
* DLBasePluginService}
* @param pluginManager DLPluginManager instance, manager the plugins
*/
public void attach(DLPlugin proxyActivity, DLPluginManager pluginManager);
public void attach(T proxyComponent, DLPluginPackage pluginManager);
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@
import com.ryg.dynamicload.DLBasePluginActivity;
import com.ryg.dynamicload.DLBasePluginFragmentActivity;
import com.ryg.dynamicload.DLBasePluginService;
import com.ryg.dynamicload.DLProxyActivity;
import com.ryg.dynamicload.DLProxyFragmentActivity;
import com.ryg.dynamicload.DLProxyService;
import com.ryg.dynamicload.proxy.DLActivityProxy;
import com.ryg.dynamicload.proxy.DLFragmentActivityProxy;
import com.ryg.dynamicload.proxy.DLServiceProxy;
import com.ryg.utils.DLConstants;
import com.ryg.utils.SoLibManager;

Expand Down Expand Up @@ -399,9 +399,9 @@ private String getPluginActivityFullPath(DLIntent dlIntent, DLPluginPackage plug
private Class<? extends Activity> getProxyActivityClass(Class<?> clazz) {
Class<? extends Activity> activityClass = null;
if (DLBasePluginActivity.class.isAssignableFrom(clazz)) {
activityClass = DLProxyActivity.class;
activityClass = DLActivityProxy.class;
} else if (DLBasePluginFragmentActivity.class.isAssignableFrom(clazz)) {
activityClass = DLProxyFragmentActivity.class;
activityClass = DLFragmentActivityProxy.class;
}

return activityClass;
Expand All @@ -410,7 +410,7 @@ private Class<? extends Activity> getProxyActivityClass(Class<?> clazz) {
private Class<? extends Service> getProxyServiceClass(Class<?> clazz) {
Class<? extends Service> proxyServiceClass = null;
if (DLBasePluginService.class.isAssignableFrom(clazz)) {
proxyServiceClass = DLProxyService.class;
proxyServiceClass = DLServiceProxy.class;
}
// 后续可能还有IntentService,待补充

Expand Down
Loading